繁体   English   中英

在Linux中使用Selenium运行无头Firefox

[英]Running headless firefox with selenium in Linux

我正在尝试在Linux上运行无头Firefox浏览器。 我安装了firefox,并在PATH上安装了xvfb,并且正在使用pyvirtualdisplay设置xvfb的显示。 当最后一行执行时

from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=False, size=(1024, 768))
display.start()
browser = webdriver.Firefox()

我收到错误消息:

WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details. 

我尝试将日志文件设置为:

p = webdriver.FirefoxProfile()
p.set_preference("webdriver.firefox.logfile", "/tmp/firefox_log")
browser = webdriver.Firefox(p)

但是,没有创建日志文件(并且首先创建该文件不会写入日志文件)。 您如何找到更多有关发生问题的信息? 我该如何解决?

from pyvirtualdisplay import Display
from selenium import webdriver



class Firefox:

    def __init__(self):

        self.display = Display(visible=0, size=(800, 600))
        self.display.start()
        self.driver = webdriver.Firefox()
        self.driver.set_window_size(1120, 450)
    def shutdown(self):
        self.display.stop()
        self.driver.quit()

我认为python没有指向正确的二进制文件。 在删除发行版随附的二进制文件然后安装64位版本之后,我曾经遇到过类似的问题。 是的,根据我的经验,Linux中的64位版本存在问题。 通常打开并挂在那里什么也不做。

如果那是您的问题,如果您的测试不是基于壁虎驱动程序,请获取45ff之前的32位版本。 对于ff45 +,还要获取壁虎驱动程序并将二进制文件添加到(壁虎驱动程序的)路径中。 然后,您应该以这种方式使用Firefox Binary。

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary("/usr/bin/firefox") #Or whatever path you have(E.G. Portable)
driver = webdriver.Firefox(firefox_binary=binary)

在Windows上,我使用便携式应用程序。 在Linux上,您必须使二进制文件具有可移植性,在Stack上有一个与此相关的线程。 完全不需要

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM