首页 > 解决方案 > 在 Python/Selenium 中将焦点更改为新窗口

问题描述

就像标题所说的那样,我无法使用“driver.switch_to_window”让我的代码专注于一个新窗口。

我的任务是: 单击父页面上的按钮>出现新窗口>单击新窗口上的“接受”按钮并继续其余代码

driver.get("https:testpage.com/")
driver.find_element_by_xpath("/html/body/div[1]/div[1]/main/div/div/div/div[2]/ul/li[1]/button").click()

#here the window appears
time.sleep(2)

driver.switch_to_window("windowName")
driver.find_element_by_xpath("/html/body/div[1]/div/div[2]/div/div[3]/button[2]").click() #here nothing happens 



标签: pythonpython-3.xseleniumautomation

解决方案


您可以尝试获取页面源,以便确定驱动程序是否已切换:

html_source = browser.page_source

它可能已切换,但您的元素未加载或在 iframe 中。如果您的元素存在,那么您可以尝试使用不同的相对 XPath,例如找到最近的 id 并从中找到您的元素:

//div[@id='someid']//button[text()='someText'] 

我不使用绝对 XPath,因为我认为它们太脆弱了。

参考:
Python Selenium 访问 HTML 源代码

绝对 xpath 和相对 xpath 有什么区别?Selenium 自动化测试中首选哪个?


推荐阅读