当前位置: 首页 > 面试题库 >

带有pyvirtualdisplay的selenium无法找到元素

倪子晋
2023-03-14
问题内容

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

script.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

通过以下方式在安装了Firefox的 亚马逊Ubuntu盒子 上运行该脚本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


 类似资料:
  • 问题内容: 我一直在尝试填充输入: 为此,我必须找到此元素。 我尝试以下事情: (萤火虫的路径) 甚至要等100秒 我总是得到: selenium.common.exceptions.NoSuchElementException:消息:’无法找到元素:(…) 你知道我在做什么错吗? 问题答案: 问题是您的标签位于内,您需要先切换到它:

  • 问题内容: 我正在尝试抓取以下网站:https : //www.bancosantander.es/es/particulares/prestamos/prestamo- coche/simulador 我正在尝试做的是: 通过移动滑块来模拟数量和持续时间。我正在尝试使用网络驱动程序找到它们。 但是我不能,事实上我已经开始抓取了。 出现的错误如下: 我的代码: 问题答案: 您可以尝试以下方法输入值

  • 这是一个我没想到会遇到的问题。我正在Ubuntu 11上使用Eclipse中的JUnit 4编写一个硒网络驱动程序测试。我一直在使用Selenium IDE,并结合Firebug和firepath,以确保我在JUnit测试中指定的x路径是正确的。我遇到的问题是selenium IDE命令, 每次都通过。然而,当我使用以下的webDrive-它总是失败 我已经使用Selenium IDE和Selen

  • 我试图使用Selenium和Python自动化一些测试。我使用Selenium IDE创建了一个套件,它工作得很好。 我现在试图在Python脚本中重新创建这个套件,但遇到了一个问题。 使用XPATH代替ID 使用隐式等待 使用从IDE导出到Python生成的函数 使用WebDriverWait 以下是IDE中的html定义: 使用隐式等待的Python脚本。所有工作都很好,直到最后一行中的冒犯元

  • 我有一个奇怪的场景,在这个场景中我无法找到DOM中的所有元素。 当通过Firefox/“Inspect Elements”查看DOM时,我清楚地看到一些“div”元素,这些元素不在Java/Selenium生成的元素列表中: 我怀疑上面的行没有提供任何元素,这些元素是不可见元素的子元素。 如果我的怀疑不正确,那么谁能解释一下我看到的原因? 否则,如果情况确实如此,那么唯一的解决方法就是检查所有不可

  • 在这个WSL 1发行版中找不到命令。我们建议将此发行版转换为WSL 2,并在Docker桌面设置中激活WSL集成。 看见https://docs.docker.com/docker-for-windows/wsl/详情请参阅。 无法更改为WSL2,也无法安装docker: