pyvirtualdisplay
在创建WebDriver
实例之前,我先从中进行显示。如果我使用的是Chrome,它可以正常工作:Chrome会显示在pyvirtualdisplay
创建的Xephyr实例中。但是,当我使用Firefox时,会出现Xephyr实例,但Firefox会显示在其外部。
这是完全重现该问题的代码:
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import FirefoxBinary
import pyvirtualdisplay
binary = FirefoxBinary()
with pyvirtualdisplay.Display(visible=True):
if True: # Set to False to use Chrome...
driver = webdriver.Firefox(None, binary)
else:
driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.quit()
上面的代码是更复杂的最小代码版本(这解释了看似无用的FirefoxBinary()
)。
将FirefoxBinary
对象的创建移动到由pyvirtualdisplay.Display
以下内容管理的上下文中:
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import FirefoxBinary
import pyvirtualdisplay
with pyvirtualdisplay.Display(visible=True):
if True: # Set to False to use Chrome...
binary = FirefoxBinary()
driver = webdriver.Firefox(None, binary)
else:
driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.quit()
问题是幕后发生了什么。名为的环境变量DISPLAY
决定了Firefox和Chrome的连接位置。它的设置方式与您期望的设置方式不同。
这是您的代码发生的情况:
您创建的实例FirefoxBinary
。如果您阅读源代码,将会看到在创建此类的对象时, 它会复制os.environ
(环境)。
您可以pyvirtualdisplay.Display
使用创建一个显示并将其用作上下文管理器。当你进入的背景下,显示器会改变os.environ
,这样只要上下文中的效果,DISPLAY
环境变量被设置成X客户端将连接到新的显示,而不是什么DISPLAY
是 之前 的背景下生效。
您创建您的驱动程序。使用Chrome时,一切都很好,因为Chrome将从DISPLAY
修改后的环境中获取其变量。但是,当您使用Firefox时,它将使用 第一步中复制 的DISPLAY
环境 中的环境。 这个环境包括一个值DISPLAY
是 之前 在上一步骤中所描述的变化,所以它不会连接到您创建的新的显示。
Mapstruct使用我自己的无参数方法作为List的工厂(而不是构造函数) 我试着映射一些对象树,应该逐级构建。我有一种硬编码根节点的方法和另一种方法,用于将实体映射到节点。所以我有一个生成根名称列表的方法,和映射的抽象方法。 } 所以在生成的代码中,“childrenNames”看起来像@Override public List childrenNames(List children){if(
今天我重新开始做一个旧的rails项目。一个让我抓狂的问题是我无法运行javascript测试用例,尽管我记得在我离开项目时它们都通过了。我正在使用 selenium webdriver 2.25.0水豚1.1.2cucumber1.2.1 无法干净地启动Firefox,参数:[“-silent”](Selenium::WebDriver::Error::WebDriverError) 我想这是因
我们有一个使用Spring Boot JPA/Hibernate构建的服务。 我在不同的jars包中有两个同名的类。 使用Eclipse运行应用程序会导致重复导入问题,因此我在其中一个实体中添加了以下内容: 它解决了Eclipse中的问题,我可以很好地运行应用程序。但是,当使用java -jar运行Spring Boot生成的jar时,问题又回来了: 看起来@Entity(name)属性被完全忽略
我已经使用selenium webdriver创建了新的firefox配置文件,就像在web驱动程序文档中一样。我也创建了firebug扩展,但当时我无法访问firefox xpcom功能。有什么方法可以做到这一点吗?我在firefox控制台中发现以下错误。
我有一张桌子在下面 我想写一个查询组由album_id,它会给下面的结果 我已经尝试过了,但是它的grouping NULL列也是,我希望所有的行都是NULL,并且groupby album_id都不是NULL。 我已经跟踪了这个链接-但不要为我工作 谢谢
问题内容: 在将selenium2.35与firefox的早期版本一起使用之前,我将其更新为firefox 26.0。我的测试以前运行良好,但现在最终出现以下错误。 我试图降级firefox的版本,但是无法从mozilla站点获得任何以前的版本。 我也尝试了所有selenium版本2.36、2.37、2.38、2.39,但它们似乎都与firefox 26.0不兼容。一旦我尝试将selenium2.