使用Python的Selenium:send_keys()并不适用于无头ubuntu

时间:2017-01-13 10:48:33

标签: selenium selenium-chromedriver headless-browser

我正在使用python Selenium,在digitalocean上使用无头ubuntu,它上面有无头Chrome。 我用了

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)

在 senium.webdriver.common.keys

但它没有用。

我导入了所需的所有内容,没有出现python语法错误,并且运行成功,但是我的代码没有切换选项卡。

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')

也不起作用。相同的代码可以在本地计算机上的选项卡之间切换,该计算机具有物理键盘和显示器。顺便说一句,我在无头Chrome上使用了pyvirtualdisplay。

我怀疑使用无头Ubuntu和无头Chrome可能会导致此问题。我猜无头的Ubuntu可以' t发送密钥,如上面的代码所示。

如何将我的远程无头Ubuntu密钥发送到浏览器?

1 个答案:

答案 0 :(得分:1)

这是众所周知的chromedriver问题。来自Chromium开发人员团队的评论

  

这是我们在ChromeDriver中模拟键盘输入的方式的限制。密钥将直接发送到呈现过程,绕过浏览器进程。因此,sendKeys()不会调用浏览器进程中的任何键盘快捷键处理程序。

您可以使用以下代码:

driver.execute_script("window.open('url_of_page_to_get', 'new_window')")

这样您就可以在新标签页中打开URL

P.S。请将此答案标记为"已接受"如果它解决了您的问题或在发生问题时让我知道