【问题标题】:Handling dynamically changing element id - using selenium webdriver处理动态变化的元素 id - 使用 selenium webdriver
【发布时间】:2013-01-22 10:40:38
【问题描述】:

我有登录页面,当单击登录按钮时,它会打开新标签。

我使用,将控件移动到新窗口,

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

【问题讨论】:

    标签: java javascript selenium selenium-webdriver dopostback


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你应该把第一个窗口作为父窗口

      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
      

      【讨论】:

        猜你喜欢
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 2020-05-18
        相关资源
        最近更新 更多