Python 在Mac上使用Selenium WebDriver在Firefox中打开新选项卡
我刚刚安装了Selenium Web驱动程序并进行了试用。它工作得很好。我的用例可以描述如下:Python 在Mac上使用Selenium WebDriver在Firefox中打开新选项卡,python,macos,firefox,selenium,selenium-webdriver,Python,Macos,Firefox,Selenium,Selenium Webdriver,我刚刚安装了Selenium Web驱动程序并进行了试用。它工作得很好。我的用例可以描述如下: 在带有pseudo X server(Xvfb)的服务器上启动Firefox 新的Driver.Firefox()对象 打开10个选项卡,并在每个选项卡中加载一个网页 从所有加载的页面检索html 唯一不起作用的步骤是步骤3。我找不到如何打开新选项卡。我在这里发现了这一点:然而,为了调试目的,我在我的Mac电脑上本地测试了这一点(即使用可见显示),我发现Firefox浏览器(在创建驱动程序对象时打开)
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)和Python 2.7。在OSX上打开新选项卡的组合键是Command+T,因此您应该使用
body.send_keys(Keys.COMMAND + 't')
在OSX上打开新选项卡的组合键是Command+T,因此您应该使用
body.send_keys(Keys.COMMAND + 't')
通过动作链接将其发送到浏览器可能更为正确,因为您实际上并没有键入文本;这也使您的代码更具可读性
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()
通过动作链接将其发送到浏览器可能更为正确,因为您实际上并没有键入文本;这也使您的代码更具可读性
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()
是的,对。然而,有趣的是,这令人困惑:)。谢谢@图姆:说清楚一点,这很让人困惑,因为苹果做到了这一点,硒元素只是跟随它的存在。是的,对。然而,有趣的是,这令人困惑:)。谢谢@图姆:说清楚一点,这很让人困惑,因为是苹果公司制造的,Selenium只是遵循它。我没有从
ActionChains(驱动程序)。send_keys(keys.COMMAND,“t”)。perform()
中获得预期的行为。这给了我这里记录的预期行为:ActionChains(driver).key\u down(Keys.COMMAND).send\u Keys(“t”).key\u up(Keys.COMMAND).执行()
。它包括一个向上键和一个向下键。我没有从操作链(驱动程序)中获得预期的行为。发送\u键(keys.COMMAND,“t”).perform()
。这给了我这里记录的预期行为:ActionChains(driver).key\u down(Keys.COMMAND).send\u Keys(“t”).key\u up(Keys.COMMAND).执行()
。它包括向上键和向下键。