当前位置: 首页 > 面试题库 >

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

邰伟彦
2023-03-14
问题内容

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

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

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

driver.switch_to_window(None)

  1. 通过打开的窗口进行迭代(尽管目前只有一个)

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

    from selenium.webdriver.common.keys import Keys
    

    driver.send_keys(Keys.CONTROL + ‘T’)

特别是这个问题是,似乎不可能直接将密钥发送给浏览器,而只能发送给这样的特定元素:

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要求输入“ it is only important that a second instance of the browser is opened.”。这个答案并不包含每个用例的所有可能需求。以下其他答案可能适合您的特定需求。



 类似资料:
  • 问题内容: 我是angular js的新手,我希望在按下按钮后在浏览器的新窗口中打开PDF文档。 我在前端发出GET请求,在后端有一个Java Rest服务,该服务响应GET并生成PDF。我希望在浏览器中打开此PDF。 如果无法以这种方式打开PDF,那么至少要使用AngularJs打开任何PDF,我该怎么做? 这就是后端在其余服务中生成响应的内容。 问题答案: 如果您有这样的事情: 而是这样做:

  • 问题内容: 我遇到的情况是,单击按钮打开带有搜索结果的新浏览器窗口。 有什么方法可以连接并聚焦到新打开的浏览器窗口吗? 并使用它,然后返回到原始(第一个)窗口。 问题答案: 您可以在以下窗口之间切换:

  • 问题内容: 我遇到的情况是,单击按钮打开带有搜索结果的新浏览器窗口。 有什么方法可以连接并聚焦到新打开的浏览器窗口吗? 并使用它,然后返回到原始(第一个)窗口。 问题答案: 你可以在以下窗口之间切换:

  • 我正在使用Selenium Java进行自动化测试。对于我的场景,首先打开登录页面,在提供凭据并单击登录按钮后,当前浏览器(带有登录页面)关闭,并打开一个带有主页的新IE窗口。在java代码中,我用登录页面url获得驱动程序,然后提供用户名和pwd,然后单击登录页面工作正常,但之后,当页面关闭和新的IE窗口打开时,我试图在主页上工作,我得到了noSuchWindowException或Null句柄

  • 我已经手动为Google.com打开了一个浏览器窗口,还有另一个浏览器窗口是由selenium webdriver为Google.com打开的。 我如何识别哪一个是硒打开的? 这个问题是在一次采访中问我的。我回答说,selenium打开的窗口不会有插件,还有一个是用Driver。关闭,但面试官说还有其他办法也可以识别。

  • 我正在尝试配置Robot框架,以便在android模拟器中打开Chrome浏览器。我有这样的代码: 运行脚本时,出现以下错误: 11:10:39.547INFO创建远程WebDriver的实例。 11:10:40.548INFO无法连接到主机上的端口4444127.0.0.1 11:10:40.548INFO无法获取主机的IP地址:127.0.0.1 11:10:41.561FAIL URLErr