【发布时间】:2015-03-11 11:41:44
【问题描述】:
设置:python 绑定 selenium 2.45.0,IEserver driver2.45.0(x86),python 2.7.9,window 7 64 位
问题:当我点击这个重定向按钮时 href= https:www.work.test.co.in:1XXX9/TEST/servlet/MainServlet/home" target="_blank"
一个新窗口打开,无法单击新窗口上的任何内容,因为控制(焦点)仍然在前一个窗口上(通过关闭前一个窗口确认)。
试过
1.没有名字,所以不能尝试
driver.switch_to_window("windowName")
2.试图打印句柄(以便我可以使用句柄引用)但我只能看到一个窗口句柄。使用以下代码
for handle in driver.window_handles:
print "Handle arr = ",handle
driver.switch_to_window(handle)
3.Question1:为什么我只得到一个窗口句柄句柄,我可以在任务管理器中看到两个 IE 实例。
4.我尝试使用索引 - 0 ,1 等
driver.switch_to_window(driver.window_handles[-1])
5.虽然试过了,但不确定这件事
driver.SwitchTo().Window(driver.WindowHandles.Last())
6.虽然我确信它不是警报窗口。
alert = driver.switch_to_alert()
脚本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Ie()
driver.get("https://my intranet site .aspx")
driver.implicitly_wait(2)
elem = driver.find_element_by_xpath("my xpath ")
elem.click()
driver.implicitly_wait(2)
elem = driver.find_element_by_xpath("//*[@id='tab1_2']/div[16]")
elem.click()
handle = driver.current_window_handle
print "Handle main = ",handle
driver.implicitly_wait(5)
elem = driver.find_element_by_xpath("page link button")
elem.click()
sleep(5)
my tried scenarioes here
建议将不胜感激
更新 - 当通过链接 URL 直接打开新窗口时,能够对其执行操作,例如单击等
所以唯一的问题是当我通过脚本继续第一个窗口打开它时。
更新:主要问题是即使任务管理器显示了两个 IE 实例,为什么没有获得第二个窗口句柄。
【问题讨论】:
-
你写的第二种解决方案一般是大多数人能够切换窗口的方式。我会问你两件事来解决问题。首先,将您编写的解决方案封装到一个 while 循环中,该循环进行 100 次迭代,睡眠时间为 100 毫秒,并将窗口数打印到控制台。看看它是否达到了 2 个窗口。其次,通常在
driver.switch_to_window(handle)之前有一个条件语句,它声明if(handle != parent_window_handle),这样您就不会最终切换回原来的窗口。 -
1.在 100 循环下尝试,1ms 间隔,它总是只打印一个窗口句柄 2。第二点是次要的,我试图首先获得第二个窗口句柄,但将包含在代码中避免出现在父窗口 3.感谢您的回复
-
保护模式设置是否更新到同一级别?
-
Surya,你指的是 IE 中的保护模式设置,如果是,那么,这两个窗口都是 Intranet 站点的一部分,我在 IE 中有以下设置,由管理员管理。互联网 - 介质保护,内联网 - 不受保护,受信任的站点 - 不受保护,受限站点 - 高度保护。如果我错了或弄错了,请原谅我
标签: python selenium automation webdriver window-handles