python - 如何使用 Selenium WebDriver for python 在浏览器上打开一个新窗口?

标签 python selenium selenium-webdriver window

我正在尝试使用 selenium for python 在浏览器中打开一个新选项卡或一个新窗口。打开新选项卡或新窗口并不重要,重要的是打开浏览器的第二个实例。

我已经尝试了几种不同的方法,但都没有成功。

  1. 切换到一个不存在的窗口,希望在找不到该窗口时打开一个新窗口:

    driver.switch_to_window(无)

  2. 遍历打开的窗口(虽然目前只有一个)

    for handle in driver.window_handles:
        driver.switch_to_window(handle)
    
  3. 尝试模拟键盘按键

    from selenium.webdriver.common.keys import Keys
    driver.send_keys(Keys.CONTROL + 'T')
    

这个问题尤其突出,似乎无法将 key 直接发送到浏览器,只能发送到像这样的特定元素:

driver.find_element_by_id('elementID').send_keys(Keys.CONTROL + 'T')

然而,当像这样的命令被发送到一个元素时,它似乎什么都不做。我试图找到页面上最顶层的 HTML 元素并将键发送给它,但再次遇到失败:

driver.find_element_by_id('wrapper').send_keys(Keys.CONTROL + 'T')

我在网上找到的另一个版本,无法验证其有效性或缺乏有效性,因为我不确定需要导入哪个类/模块

act = ActionChains(driver)
act.key_down(browserKeys.CONTROL)
act.click("").perform()
act.key_up(browserKeys.CONTROL)

一些非常相似但语法不同的东西(我不确定其中一个或两个是否是正确的语法)

actions.key_down(Keys.CONTROL)
element.send_keys('t')
actions.key_up(Keys.CONTROL)

最佳答案

你做这样的事情怎么样

driver = webdriver.Firefox() #First FF window
second_driver = webdriver.Firefox() #The new window you wanted to open

根据你想与之交互的窗口,你相应地发送命令

print driver.title #to interact with the first driver
print second_driver.title #to interact with the second driver

对于所有反对的选民:


OP 要求“打开浏览器的第二个实例很重要。”。这个答案不包含每个人的用例的所有可能要求。 下面的其他答案可能适合您的特定需求。

关于python - 如何使用 Selenium WebDriver for python 在浏览器上打开一个新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17325629/

相关文章:

https - Selenium - 跨域和 HTTPS 问题

javascript - 如何删除 "chrome is being controlled by automated test software"selenium javascript

javascript - 在 FireFox 和 IE 中使用 Selenium WebdriverJS 时出现问题

python - Matplotlib:取消matplotlib 2.0引入的坐标轴偏移

python - 如何在 return 语句中将字符串评估为 boolean 值?

Python 过去 60 个月末

python - 如何防止selenium中的css和img下载

java - 无法从 iframe 内的下拉列表中选择选项 - selenium - java8

python - 转换时忽略字符

python - 使用自定义排序功能按键对字典列表进行排序