带有pyvirtualdisplay的selenium无法找到元素

我有一个工作脚本,可以使用selenium登录到站点,如下所示:

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

通过以下方式在安装了Firefox的 上运行该脚本sshsudo apt-get install firefox

我得到的错误是:

selenium.common.exceptions.NoSuchElementException:消息:u’无法找到元素:{“ method”:“

id”,“ selector”:“ content”}’

如果我ssh也通过另一个ubuntu框运行相同的脚本,它运行正常,没有错误,但是我不知道该框上如何安装了firefox,这可能是导致该错误的原因。是与firefox相关的安装,以及如何正确安装它与pyvirtualdisplay和selenium一起使用?

回答:

如果网站上有一些动态内容,则需要等待一段时间才能检索到所需的元素。尝试下面的代码示例:

  • 您是否为pyvirtualdisplaylike xvfb和安装了后端xephyr?如果不,

尝试: 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

以上是 带有pyvirtualdisplay的selenium无法找到元素 的全部内容, 来源链接: utcz.com/qa/407496.html

回到顶部