当我想按下按钮并下载时,如何使用Python和Selenium在后台自动运行网站(chrome)?

问题描述 投票:0回答:1

我想在 selenium 的帮助下用 python 创建一个自动化程序,打开一个网站,导航到我按下按钮并下载数据的部分。如果程序没有在后台运行,则它可以正常工作(那么我不使用

chrome_options.add_argument("--headless=old")
)。如果网站在后台运行,程序运行不会出错,但不会下载数据。我不认为 按下按钮。 我进行了以下 chrome 设置:

chrome_options = Options()
chrome_options.add_argument("--headless=old") # "--headless" or "--headless=new" can't work
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--window-size=1920,1080") 
chrome_options.add_argument("--log-level=3") 
chrome_options.add_argument("--disable-extensions")

...

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.get(""https://www.example.com"")  
time.sleep(1)

按下按钮

...

button = driver.find_element(By.XPATH, '//*[@data-form-button="primary"]')
button.click()

button = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="dialog-region"]/form/div/footer/ul/li[2]/button')))
driver.execute_script("arguments[0].click();", button)

form = driver.find_element(By.XPATH, '//*[@id="dialog-region"]/form')
form.submit()

这行不通。

当我使用下一个 chrome 设置时:

chrome_options.add_argument("--headless")
chrome_options.add_argument("--headless=new")
然后会出现一个白色面板,直到我关闭程序。当我使用
"--headless=old"
时,该程序仅在后台打开的情况下运行。我用它来按下按钮:

button = driver.find_element(By.XPATH, '//*[@data-form-button="primary"]')
button.click()

Chrome版本:129.0.6668.101

硒版本:4.25.0

操作系统:Windows 10

预先感谢您的帮助。

python selenium-webdriver button background
1个回答
0
投票

看起来下载在无头模式下不起作用,除非您在初始化驱动程序之前通过 Chrome 实验选项设置下载路径:请参阅此处的实现


话虽这么说,我个人会尝试使用 http requests 来做到这一点。那么你就不用担心Web自动化带来的麻烦了(页面不稳定、Selenium不稳定、每次下载驱动程序的时间等等)

© www.soinside.com 2019 - 2024. All rights reserved.