【发布时间】:2023-01-14 03:08:47
【问题描述】:
以下代码与有头 chrome 完美配合,但在无头 chrome 的最后一行因超时而失败
import time
import chromedriver_autoinstaller
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 as EC
from selenium.webdriver.chrome.options import Options
chromedriver_autoinstaller.install()
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://redacted")
elem = WebDriverWait(driver, 60).until(
EC.presence_of_element_located(
(By.XPATH, "//div[contains(@class, 'new-book-rect')]")
))
我检查了类似的问题,但似乎不适用。一个表示您需要使用 xpath 而不是 id 来查找元素,但我已经在这样做了。
失败的原因是什么,有没有办法调查无头运行时发生了什么?
使用最新版本的 Chrome,并自动下载驱动程序。
【问题讨论】:
-
它似乎正在检测无头模式下的机器人。你可以用这个
print(driver.page_source)放心,并检查 html 是否有所需的元素? -
@KunduK 很好发现,但实际上正在做的是有一个单一的登录,并且无头它不会自己通过 SSO 重定向舞蹈(它有头)。目前还不清楚为什么它会采取不同的行动。
-
@KunduK 请注意,我尝试使用 --enable-features=NetworkService,但它不起作用。同样的结果。
-
你能试试这个选项吗:
--disable-blink-features=AutomationControlled -
@KunduK 同样的问题。
标签: python selenium google-chrome