在 Selenium 中使用无头选项时出现 TimeoutException
Posted
技术标签:
【中文标题】在 Selenium 中使用无头选项时出现 TimeoutException【英文标题】:TimeoutException when using headless option in Selenium 【发布时间】:2021-08-20 20:24:48 【问题描述】:我正在尝试从一个元素中获取内部 html。但我在无头模式下遇到超时异常。如果我禁用无头,它可以工作。我也需要无头模式的元素。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
options = webdriver.ChromeOptions()
options.headless = True
browser = webdriver.Chrome(executable_path="./driver/chromedriver", options=options)
browser.get("https://inspiring-lewin-33088d.netlify.app")
try:
element = WebDriverWait(browser, 10).until(
expected_conditions.presence_of_element_located((By.ID, "zp"))
)
s = element.get_attribute('innerHTML')
print(s)
finally:
browser.close()
我尝试过其他解决方案,例如添加
options.add_argument("--window-size=1920,1080") options.add_argument('--start-maximized')
但它们不起作用。感谢您的帮助。
【问题讨论】:
【参考方案1】:将 chrome 更新到 v66 并将 chromedriver 更新到 v2.38 并设置以下选项:
ChromeOptions options = new ChromeOptions();
options.addArguments("--window-size=1920,1080");
options.addArguments("--disable-gpu");
options.addArguments("-- disable-extensions");
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--proxy-server='direct://'");
options.addArguments("--proxy-bypass-list=*");
options.addArguments("--start-maximized");
options.addArguments("--headless");
应该解决问题
【讨论】:
以上是关于在 Selenium 中使用无头选项时出现 TimeoutException的主要内容,如果未能解决你的问题,请参考以下文章
切换选项卡时,带有无头 chrome 的 Selenium 无法获取 url
使用 selenium 在无头模式下运行 Firefox 错误:“选项”对象没有属性“二进制”
如何使用 Java 和 Selenium 为我的驱动程序传递无头选项?
在 Python 中使用 chromedriver_autoinstaller 运行 selenium 时出现问题