单击按钮后使用 Selenium 切换到新窗口

Posted

技术标签:

【中文标题】单击按钮后使用 Selenium 切换到新窗口【英文标题】:Switching into new window using Selenium after button click 【发布时间】:2018-04-15 10:13:18 【问题描述】:

我正在做一个非常简单的网页项目,但有点卡住了。我正在使用一个网站,在填写表格并单击按钮后,我会在新窗口中打开 XML 文档时为我提供所需的数据。但是,我不知道如何访问它,因为我没有给出窗口名称

browser = Browser('firefox')
browser.visit('http://desiredurl/')
form = browser.find_by_id('input')
button = browser.find_by_id('send')
form.fill(string)
button.click()

单击一个按钮会触发一个 ajax 请求(doAjaxRequest("POST", url, xml);)并打开一个带有 XML 文档的新窗口。从打开的 XML 访问数据的最佳方式是什么?

【问题讨论】:

【参考方案1】:

您的问题的解决方案是将Explicitwaitexpected_conditions 诱导为number_of_windows_to_be,然后切换到新窗口如下:

parent = driver.current_window_handle
button = browser.find_by_id('send')
form.fill(string)
button.click()
WebDriverWait(driver, 10).until(
    EC.number_of_windows_to_be(2)
    )   
child = driver.window_handles[1]      
driver.switch_to_window(child) 
print ("Child Window ID is : %s" %child)
print("Child Window Title is : %s " %(driver.title)) 

您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

【讨论】:

给初学者一点帮助:from selenium.webdriver.support import expected_conditions as EC

以上是关于单击按钮后使用 Selenium 切换到新窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Selenium 切换到新窗口

单击按钮后切换到打开的新浏览器 [Python][Selenium]

如何在 Selenium for Python 中切换到新窗口?

《selenium2 python 自动化测试实战》——切换窗口

Selenium多窗口切换方法快速入门

如何使用Selenium VBA将焦点切换到新窗口?