使用Mac上的Selenium WebDriver在Firefox中打开新选项卡

时间:2014-02-14 12:29:30

标签: python macos firefox selenium selenium-webdriver

我刚安装了Selenium Web Driver并试用了它。它很棒。我的用例可以描述如下:

  1. 在具有伪X服务器(Xvfb)的服务器上启动Firefox
  2. 新的Driver.Firefox()对象
  3. 打开10个标签页并在每个标签页中加载网页
  4. 从所有已加载的页面中检索html
  5. 唯一不起作用的步骤是第3步。我无法找到如何打开新标签页。我在SO上发现了这个:How to open a new tab using Selenium WebDriver with Java?但是,我在Mac上进行了本地测试(即可见显示)以进行调试,我看到Firefox浏览器(在创建驱动程序对象时打开)无法打开在执行SO线程时所做的任何选项卡。所以我在这里尝试了这个:

    driver = webdriver.Firefox()
    driver.get("https://stackoverflow.com/")
    body = driver.find_element_by_tag_name("body")
    body.send_keys(Keys.CONTROL + 't')
    

    正如我所说,它对我不起作用。那么,打开标签怎么可能呢?我使用Selenium 2.39(pip install selenium)和Python 2.7。

2 个答案:

答案 0 :(得分:3)

在OSX上打开新标签的组合键是Command + T,因此您应该使用

body.send_keys(Keys.COMMAND + 't') 

答案 1 :(得分:2)

通过动作链将它发送到浏览器可能稍微更正确,因为你实际上并没有输入文字;这也使你的代码更具可读性

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

# before correction from  DMfll:
# ActionChains(driver).send_keys(Keys.COMMAND, "t").perform()

# correct method
ActionChains(driver).key_down(Keys.COMMAND).send_keys("t").key_up(Keys.COMMAND)‌​‌​.perform()