Selenium 与 Python:send_keys() 在无头 ubuntu 上不起作用

hey*_*ude 1 selenium headless-browser selenium-chromedriver

我正在使用 python Selenium,以及 digitalocean 的无头 ubuntu,其中有无头 Chrome。我用了

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
Run Code Online (Sandbox Code Playgroud)

在 senium.webdriver.common.keys

但这不起作用。

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

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
Run Code Online (Sandbox Code Playgroud)

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

我怀疑使用 headless Ubuntu 和 headless Chrome 可能会导致这个问题。我猜想无头 Ubuntu 无法发送密钥,如上面代码所示。

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

And*_*son 5

这是众所周知的问题chromedriverChromium开发团队的评论

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

您可以使用以下代码代替:

driver.execute_script("window.open('url_of_page_to_get', 'new_window')")
Run Code Online (Sandbox Code Playgroud)

URL这将允许您在新选项卡中打开

PS 如果解决了您的问题,请将此答案标记为“已接受”,或者如果出现问题请告诉我