为什么我的子进程脚本不是 运行 我的 selenium python 脚本?
Why is my subprocess script not running my selenium python script?
我正在尝试使用子进程 运行 多个 Python 脚本。作为试验,我只是想看看一个脚本是否会 运行。该脚本当前位于桌面上。我正在使用 Spyder 运行 我的脚本。我 运行 我的脚本包含以下代码:
import subprocess
subprocess.run(
"python3 script1.py",
cwd=r'C:\Users\David\Desktop',
shell=True,
)
当我 运行 时我没有收到任何错误,但是 script1.py 本身没有 运行。我知道这是因为 script1.py 是一个 selenium 代码,它应该从网站下载文件,但当我使用上面的代码时它不会下载文件。关于可能出什么问题的任何想法?
如果您想亲自测试一下。这是script1.py:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options=Options()
options.add_argument("--headless")
driver=webdriver.Chrome(options=options)
params={'behavior':'allow','downloadPath':r'C:\Users\David\Downloads'}
driver.execute_cdp_cmd('Page.setDownloadBehavior',params)
driver.get("https://data.gov.uk/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div[2]/form/div/div/input"))).send_keys("Forestry Statistics 2018: Recreation")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div[2]/form/div/div/div/button"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/form/main/div/div[2]/div[2]/div[2]/h2/a"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div/div/div/section/table/tbody/tr[2]/td[1]/a"))).click()
尝试:
import subprocess
subprocess.run(["python3", "C:/Users/David/Desktop/script1.py"], shell=True)
编辑:我已经像这样使用了 Popen
,它似乎工作正常。尝试 Popen
也许:
subprocess.Popen(["python3", "C:/Users/David/Desktop/script1.py"], shell=True)
Edit2:通过将 python3
更改为 python
解决了问题。
我正在尝试使用子进程 运行 多个 Python 脚本。作为试验,我只是想看看一个脚本是否会 运行。该脚本当前位于桌面上。我正在使用 Spyder 运行 我的脚本。我 运行 我的脚本包含以下代码:
import subprocess
subprocess.run(
"python3 script1.py",
cwd=r'C:\Users\David\Desktop',
shell=True,
)
当我 运行 时我没有收到任何错误,但是 script1.py 本身没有 运行。我知道这是因为 script1.py 是一个 selenium 代码,它应该从网站下载文件,但当我使用上面的代码时它不会下载文件。关于可能出什么问题的任何想法?
如果您想亲自测试一下。这是script1.py:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options=Options()
options.add_argument("--headless")
driver=webdriver.Chrome(options=options)
params={'behavior':'allow','downloadPath':r'C:\Users\David\Downloads'}
driver.execute_cdp_cmd('Page.setDownloadBehavior',params)
driver.get("https://data.gov.uk/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div[2]/form/div/div/input"))).send_keys("Forestry Statistics 2018: Recreation")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div[2]/form/div/div/div/button"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/form/main/div/div[2]/div[2]/div[2]/h2/a"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[3]/main/div/div/div/section/table/tbody/tr[2]/td[1]/a"))).click()
尝试:
import subprocess
subprocess.run(["python3", "C:/Users/David/Desktop/script1.py"], shell=True)
编辑:我已经像这样使用了 Popen
,它似乎工作正常。尝试 Popen
也许:
subprocess.Popen(["python3", "C:/Users/David/Desktop/script1.py"], shell=True)
Edit2:通过将 python3
更改为 python
解决了问题。