【发布时间】:2022-01-16 09:23:34
【问题描述】:
我在 Linux 机器上无头运行 Selenium,但它找不到特定元素。但是,我在 Windows 机器上运行完全相同的代码,它可以毫无问题地找到元素。我的 Linux 机器上有最新版本的驱动程序。任何想法如何解决这个问题?
options = Options()
options.add_argument('--no-sandbox')
options.add_argument("--headless")
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/97.0.4692.71 Safari/537.36')
with webdriver.Chrome(options=options) as driver:
driver.get(url)
driver.find_element(By.ID, "btnhome").click()
video = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.TAG_NAME, "video"))).get_attribute("src")
问题元素是视频元素。我也将等待时间增加到 2 分钟,仅用于调试。它在 Windows headless 上运行良好,但在 Linux headless 上找不到。
谢谢
【问题讨论】:
-
您可以做的一个快速检查是禁用无头,让浏览器可见并查看问题发生在哪里。
-
您可以尝试使用
element_to_be_clickable或visibility_of_element_located而不是presence_of_element_located,如果有帮助,请更新我们? -
我第二个@curisepandey。即使元素在背景中,元素的存在也会变为绿色,并且不一定在 DOM 中可见和可点击。
-
@AnandGautam 不幸的是 Linux 系统是一个非 GUI 系统,所以除非它是无头的,否则我无法运行它
-
使用stackoverflow.com/a/6300672/7058266 应该可以帮助您解决问题。我将您需要的所有详细信息放在我发布的较长答案中。
标签: python python-3.x selenium