gpt4 book ai didi

python - 带有pyvirtualdisplay的Selenium无法定位元素

转载 作者:太空狗 更新时间:2023-10-30 00:36:15 24 4
gpt4 key购买 nike

我有一个工作脚本可以像这样使用 selenium 登录到站点:

脚本.py

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
actions = webdriver.ActionChains(browser)
browser.get('some_url_I_need')
content = browser.find_element_by_id('content') # Error on this line

通过 sshamazon ubuntu box 上运行该脚本,我按照以下方式安装了 firefox:sudo apt-get install firefox

我得到的错误是:

selenium.common.exceptions.NoSuchElementException: Message: u'Unable to locate element: {"method":"id","selector":"content"}'

如果我也通过 ssh 在另一个 ubuntu 机器上运行相同的脚本,它运行良好,没有错误,但我不知道那个机器上是如何安装 firefox 的,可能是什么原因那个错误。是相关的 firefox 安装以及如何正确安装它以与 pyvirtualdisplay 和 selenium 一起使用?

最佳答案

如果网站上有一些动态内容需要等待一段时间直到你可以检索到想要的元素。尝试以下代码示例:

检查配置

  • 您是否为 pyvirtualdisplay 安装了后端,例如 xvfbxephyr?如果没有,

    尝试:sudo apt-get install xvfb xserver-xephyr

首先尝试:添加一个简单的time.sleep()

import time
from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
actions = webdriver.ActionChains(browser)
browser.get('some_url_I_need')
time.sleep(5) # sleep for 5 seconds
content = browser.find_element_by_id('content') # Error on this line

第二次尝试:将 browser.implicitly_wait(30) 添加到您的 Selenium webdriver。

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
browser.implicitly_wait(30) # seconds
actions = webdriver.ActionChains(browser)
browser.get('some_url_I_need')
content = browser.find_element_by_id('content') # Error on this line

关于python - 带有pyvirtualdisplay的Selenium无法定位元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20485360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com