更改控件后,无法在新窗口中打开的列表中执行任何操作。
点击<img>
打开值列表后,我有一个父窗口,带有新窗口的列表。我已使用下面的代码将控件更改为新窗口
for(String handle:driver.getWindowHandles()){
driver.switchTo()窗口(手柄)。
}
driver.findElement(By.cssSelector(&#34; [ID =&#39; dynshlp_sel_2-ROWSEL&#39;]&#34));
之后我无法做任何事情。我需要点击dynshlp_sel_2-rowsel
。但
除非我关闭新窗口,否则程序不会单击该元素,也不会显示任何错误。
在关闭新窗口后,发出错误声明无法找到该元素。
我是此网站的新用户,我不知道如何为此问题添加屏幕截图。
HTML CODE:
<td id="dynshlp_sel_2" class="th-clr-nsel th-clr-cel">
<div style="text-align:center;">
<a id="dynshlp_sel_2-rowsel" class="th-lk" title="Select table row" href="javascript:void(0);" onfocus="thtmlbSaveKeyboardFocus('dynshlp_sel_2-rowsel');"></a>
</div>
</td>
<td class="th-clr-cel th-clr-pad th-clr-cel-dis th-clr-cel-first-col" style="width:000056%;
我的代码: String mwh = driver.getWindowHandle(); driver.findElement(By.cssSelector(&#34; a [id =&#39; C20_W57_V58_V59_V60_marketing_struct.classific-btn&#39;]&gt; img:nth-child(1)&#34;))。click(); //上面的点击将打开一个弹出窗口 的System.out.println(driver.getWindowHandles()大小()); 设置s = driver.getWindowHandles();
//this method will gives you the handles of all opened windows
Iterator ite=s.iterator();
while(ite.hasNext())
{
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mwh))
{
driver.switchTo().window(popupHandle);
driver.findElement(By.cssSelector("a[id='dynshlp_sel_2-rowsel']"));
//**here you can perform operation in pop-up window**
//After finished your operation in pop-up just select the main window again
driver.switchTo().window(mwh);
}
}
答案 0 :(得分:0)
从附加的代码中,我可以看到Onfocus事件被触发。
要处理这些事情,
请发布有助于调试的错误日志。
此致
答案 1 :(得分:0)
用于将控件切换为弹出窗口的代码是错误的。
请参阅以下主题以了解如何将控件切换到新窗口。
How can selenium web driver get to know when the new window has opened and then resume its execution
请参阅this blog post以了解有关弹出窗口处理的更多信息。
EDIT-I
String mwh=driver.getWindowHandle();
<<<<<< Click on Button which leads to open a new window >>>>>
Set s=driver.getWindowHandles();
//this method will gives you the handles of all opened windows
Iterator ite=s.iterator();
while(ite.hasNext())
{
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mwh))
{
driver.switchTo().window(popupHandle);
//**here you can perform operation in pop-up window**
//After finished your operation in pop-up just select the main window again
driver.switchTo().window(mwh);
}
}