Exit命令停止python文件执行

2024-04-20 05:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在执行python脚本提交.py来自另一个python脚本,如下所示:

response = os.popen("python3 static/submit.py "+contest_id+" "+task_id).read()
print(response)

但我无法找到正确的退出命令来停止脚本的执行。你知道吗

提交.py

import sys
import os
import time
from credentials import USER_NAME, PASSWORD
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

contest_id = (sys.argv)[1]
task_id = (sys.argv)[2]

url = "https://codeforces.com/contest/"+contest_id+"/problem/"+task_id

try:
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    driver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
except:
    print("WEBDRIVER ERROR")
    # exit command

try:
    driver.get(url)
except:
    print("NETWORK ERROR / SITE UNAVAILABLE")
    # exit command

enter = driver.find_element(By.LINK_TEXT, "Enter")
enter.click()
user_name = driver.find_element_by_id("handleOrEmail")
user_name.send_keys(USER_NAME)
password = driver.find_element_by_id("password")
password.send_keys(PASSWORD)
submit = driver.find_element_by_class_name("submit")
submit.click()
time.sleep(10)
try:
    error_source_file = driver.find_element_by_class_name("shiftUp")
    print("INVALID CREDENTIALS")
    # exit command
except:
    pass

language = driver.find_element_by_name("programTypeId")
language.send_keys("GNU G++17 7.3.0")
sourceFile = driver.find_element_by_name("sourceFile")
sourceFile.send_keys(os.path.abspath("contests/cf_"+str(contest_id)+"/"+task_id+".cpp"))
submit_btn = driver.find_element_by_class_name("submit")
submit_btn.click()
try:
    error_source_file = driver.find_element_by_class_name("shiftUp")
    print("REPEATED CODE SUBMISSION")
except:
    print("SOLUTION SUBMITTED")

driver.close()

在comment exit command(#exit command)的每个位置,我都需要适当的exit命令来放置。你知道吗

更新: 用错误的证件,我试过了系统出口()作为退出命令,它抛出错误:

Traceback (most recent call last):
  File "static/submit.py", line 44, in <module>
    language = driver.find_element_by_name("programTypeId")
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"programTypeId"}
  (Session info: headless chrome=75.0.3770.90)
  (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-50-generic x86_64)
INVALID CREDENTIALS

最后一行是返回的响应。所以,可以看出脚本的执行并没有在exit命令处停止。你知道吗


Tags: namepyimportidbyresponsedriverselenium
1条回答
网友
1楼 · 发布于 2024-04-20 05:59:55

因为您要导入sys,所以只需使用exit()结束程序。你知道吗

代码:

sys.exit()

/strong更新:<> 对我来说没问题。试试这个代码,你自己看看。你知道吗

import sys

if sys.argv[1] == 'x':
    print("Im exiting now!")
    sys.exit()
else:
    print("Im not exiting")

print("Here is another string")

相关问题 更多 >