处理动态变化的元素id - 使用selenium webdriver

时间:2013-01-22 10:40:39

标签: java javascript selenium selenium-webdriver dopostback

我有登录页面,点击登录按钮后会打开新标签页。

我使用

将控件移动到新窗口
driver.switchTo().window("_blank");

当我点击一个Button时,它会打开新的弹出窗口(弹出窗口不是普通窗口,而是iframe)。

我选择了一个弹出窗口,

driver.switchTo().frame("frameName");

该弹出窗口包含记录列表;每条记录都有单独的“选择”选项(动态更改id)。

driver.findElement(By.xpath("//a[@id='radgrdPeople_ctl00_ctl04_lnkSelect']")).click();

从列表中选择记录时,将关闭弹出窗口并刷新页面。

现在我想将控件返回到父窗口以执行其他操作。

记录已成功选中。但我无法再次聚焦父窗口。

我试过了:

driver.switchTo().defaultcontent();
driver.switchTo().window("_blank");

并且

driver.getWindowHandles()

我仍然遇到同样的问题。

我不知道是否必须使用任何java脚本执行器来处理动态变化的元素id。

请你们帮助我......

先谢谢。

通过 K.Ranjithkumar

2 个答案:

答案 0 :(得分:0)

在点击登录按钮后的帖子中,您使用WindowName切换到新窗口。但是,在尝试过的解决方案中,您使用empty string切换到新窗口。

答案 1 :(得分:0)

您应该将第一个窗口设为父窗口

String parent=driver.getwindowhandle;
// then, set String popup to be equal to window handle of the 
// popup window
driver.switchTo().window( popup);
driver.findElement(By.id("okbutton")).click(); //assumes close of popup

现在,在弹出窗口上执行任务后,将控制权返回到父窗口:

driver.switchTo().window( parent );// switch back to parent window
driver.switchTo().defaultcontent(); // reset iframe context