我正在使用无头的Firefox,它位于digitalocean的无头Ubuntu上。 以下是我的代码。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
main_window = driver.current_window_handle
driver.get("https://www.google.co.kr")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
driver.switch_to_window(main_window)
print driver.title
driver.get("http://www.bing.com")
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't')
driver.switch_to_window(main_window)
print driver.title
for i in range(0,3):
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB)
driver.switch_to_window(main_window)
print driver.title
结果是:
谷歌 兵 兵 兵 秉
这意味着发送标签并在标签之间切换的send_keys()根本不起作用。没有运行时错误。 相同的代码可以在本地计算机上的选项卡之间切换,该计算机具有物理键盘和显示器。
我怀疑无头Ubuntu或Firefox使send_keys不起作用。 有帮助吗?谢谢!我在谷歌上看了很多,但没有帮助。
--------------------------- EDIT ------------------- --------
我的无头火狐版本是45.0.1。有趣的是,我在我的Mac上使用firefox 45.0.1运行相同的代码,并且它运行得很好。我在无头linux和Mac上使用firefox45.0.1