Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何通过SSH连接在远程服务器上运行headless firefox浏览器?_Python 3.x_Selenium_Firefox - Fatal编程技术网

Python 3.x 如何通过SSH连接在远程服务器上运行headless firefox浏览器?

Python 3.x 如何通过SSH连接在远程服务器上运行headless firefox浏览器?,python-3.x,selenium,firefox,Python 3.x,Selenium,Firefox,我有一个远程服务器,我希望在那里运行Firefox的无头会话。我登录到远程服务器并执行命令。即使命令是无头的,它仍然会打开我机器的Firefox并在其中执行操作。知道原因是什么吗?我希望在显示器(如笔记本电脑)未连接的情况下远程执行这些操作 from selenium.webdriver import Firefox from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Key

我有一个远程服务器,我希望在那里运行Firefox的无头会话。我登录到远程服务器并执行命令。即使命令是无头的,它仍然会打开我机器的Firefox并在其中执行操作。知道原因是什么吗?我希望在显示器(如笔记本电脑)未连接的情况下远程执行这些操作

from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait

if __name__ == "__main__":
    options = Options()
    options.add_argument('-headless')
    driver = Firefox(executable_path='/path/to/geckodriver', firefox_options=options)
    wait = WebDriverWait(driver, timeout=10)
    driver.get('http://www.google.com')
    wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER)
    wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click()
    print(driver.page_source)
    driver.quit()

我自己决定如下:

首先在终端运行这个

sudo apt-get install xvfb
sudo pip3 install pyvirtualdisplay
然后在代码中添加以下行

from pyvirtualdisplay import Display
display = Display(visible=0,size=(1024,768))
display.start()
我的浏览器配置如下所示:

cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
display = Display(visible=0,size=(1024,768))
display.start()
options = Options()
options.set_headless(headless=True)
binary = FirefoxBinary("/home/ubuntu/firefox/firefox")
options.add_argument("-headless")
browser = Firefox(firefox_options=options, executable_path='/home/ubuntu/Documents/sourcecode/geckodriver',firefox_binary=binary,capabilities = cap )

我自己决定如下:

首先在终端运行这个

sudo apt-get install xvfb
sudo pip3 install pyvirtualdisplay
然后在代码中添加以下行

from pyvirtualdisplay import Display
display = Display(visible=0,size=(1024,768))
display.start()
我的浏览器配置如下所示:

cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
display = Display(visible=0,size=(1024,768))
display.start()
options = Options()
options.set_headless(headless=True)
binary = FirefoxBinary("/home/ubuntu/firefox/firefox")
options.add_argument("-headless")
browser = Firefox(firefox_options=options, executable_path='/home/ubuntu/Documents/sourcecode/geckodriver',firefox_binary=binary,capabilities = cap )

add_参数(“--headless”)也尝试过这个。没有,幸运的是,您尝试过这个选项:-options.set_headless(headless=True)是的。问题是我们正在通过SSHY在终端计算机上执行代码。您需要在远程计算机上执行代码,而不是在您的机器选项上本地执行代码。add_参数(“--headless”)也尝试过这一点。没有,幸运的是,您尝试过这个选项:-options.set_headless(headless=True)是的。问题是我们正在通过SSHY在终端计算机上执行代码。您需要在远程计算机上执行代码,而不是在您的计算机上本地执行代码