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

2024-05-29 04:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚安装了Selenium Web驱动程序并试用了它。效果很好。我的用例可以描述如下:

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

唯一不起作用的步骤是第3步。我不知道如何打开新的标签页。我在这里找到了这个,所以: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安装Selenium)和python2.7。


Tags: 对象服务器webserverdriverselenium驱动程序body
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()

在OSX上打开一个新选项卡的键组合是Command+T,因此应该使用

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

相关问题 更多 >

    热门问题