【问题标题】:Open new tab in Firefox using Selenium WebDriver on Mac在 Mac 上使用 Selenium WebDriver 在 Firefox 中打开新标签页
【发布时间】:2014-03-13 19:41:45
【问题描述】:

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

  1. 在带有伪 X 服务器 (Xvfb) 的服务器上启动 Firefox
  2. 新建 Driver.Firefox() 对象
  3. 打开 10 个标签并在每个标签中加载一个网页
  4. 从所有加载的页面中检索 html

唯一不起作用的步骤是第 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。

【问题讨论】:

    标签: python macos firefox selenium selenium-webdriver


    【解决方案1】:

    在 OSX 上打开新标签的组合键是 Command+T,所以你应该使用

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

    【讨论】:

    • 是的,没错。然而,这很有趣:)。谢谢!
    • @toom:为了清楚起见,这很令人困惑,因为 Apple 这样做了,Selenium 只是跟随那里的内容。
    【解决方案2】:

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

    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()
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 2020-04-09
    • 2015-04-10
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多