python - 在 headless chrome 中等待带有元素的网页时出现超时异常

标签 python selenium selenium-webdriver selenium-chromedriver

以下代码使用非 headless chrome 且有效:

import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait


chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--start-maximized')
chrome_options.binary_location = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'

driver = webdriver.Chrome(executable_path=os.path.abspath("C:\User\Program Files\chrome-driver\chromedriver.exe"))

driver.set_window_size(1200, 600) 

driver.get("login-url")
driver.find_element_by_id("loginId").send_keys("uname")
driver.find_element_by_id("newPassword").send_keys("pwd")
driver.find_element_by_name("submit-button").click()
driver.set_window_size(1200, 800)
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,"user-info")))

v = driver.find_element_by_xpath("//tr[4]/td[5]/span").text

print(v)

当我选择使用 headless chrome 时:

driver = webdriver.Chrome(executable_path=os.path.abspath("C:\User\Program Files\chrome-driver\chromedriver.exe"), chrome_options=chrome_options)

它抛出以下异常:

Traceback (most recent call last):
  File "C:/User/workspaces/pyworkspaces/fin2/venv/process.py", line 28, in <module>
    WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,"user-info")))
  File "C:\User\workspaces\pyworkspaces\fin2\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

因此在 headless chrome 中,它似乎在以下行中失败了:

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID,"user-info")))

我还尝试了 presence_of_element_located:

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"user-info")))

但它仍然给出TimeOutException。为什么会这样?

最佳答案

我过去所做的是添加参数“--start-maximized”:

chrome_options.add_argument('--start-maximized')

试试吧,希望对你有帮助!

关于python - 在 headless chrome 中等待带有元素的网页时出现超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56686318/

相关文章:

java - If-Else 条件不适用于我的测试用例

java - 在 selenium webdriver 中无需定位器即可验证文本的存在和可见性

python - USB条码扫描器研究

Python - Neaten 这个追加/扩展条件

python - 我应该在单元测试中测试 View 的属性吗?

python - 给定一个 (Python) Selenium WebElement,我可以获得 innerText 吗?

python - Heroku:使用 RQ 在 Python 中执行后台任务

python - 如何在 scrapy 中发出请求之前更改请求 url?

java - Selenium NoSuchElementException

javascript - 什么时候应该使用 getInnerHtml() 方法?