带有pyvirtualdisplay的selenium无法找到元素
我有一个工作脚本,可以使用selenium登录到站点,如下所示:
from pyvirtualdisplay import Displayfrom 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的 上运行该脚本ssh
: sudo apt-get install firefox
我得到的错误是:
selenium.common.exceptions.NoSuchElementException:消息:u’无法找到元素:{“ method”:“
id”,“ selector”:“ content”}’
如果我ssh
也通过另一个ubuntu框运行相同的脚本,它运行正常,没有错误,但是我不知道该框上如何安装了firefox,这可能是导致该错误的原因。是与firefox相关的安装,以及如何正确安装它与pyvirtualdisplay和selenium一起使用?
回答:
如果网站上有一些动态内容,则需要等待一段时间才能检索到所需的元素。尝试下面的代码示例:
- 您是否为
pyvirtualdisplay
likexvfb
和安装了后端xephyr
?如果不,
尝试: sudo apt-get install xvfb xserver-xephyr
添加一个简单的time.sleep()
import timefrom 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 Displayfrom 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