Java 更改控件后,无法在新窗口中打开的列表中执行任何操作
更改控件后,无法在新窗口中打开的列表中执行任何操作。 单击一个Java 更改控件后,无法在新窗口中打开的列表中执行任何操作,java,selenium,webdriver,Java,Selenium,Webdriver,更改控件后,无法在新窗口中打开的列表中执行任何操作。 单击一个后,我有一个父窗口,它打开了一个新窗口列表中的值列表。我已经使用下面的代码将控件更改为新窗口 for(字符串句柄:driver.getWindowHandles()){ driver.switchTo().窗口(手柄); } driver.findElement(由.cssSelector(“a[id='dynshlp\u sel\u 2-rowsel'])) 从那以后,我什么也做不了。我需要单击dynshlp\u sel\u 2-r
后,我有一个父窗口,它打开了一个新窗口列表中的值列表。我已经使用下面的代码将控件更改为新窗口
for(字符串句柄:driver.getWindowHandles()){
driver.switchTo().窗口(手柄);
}
driver.findElement(由.cssSelector(“a[id='dynshlp\u sel\u 2-rowsel']))
从那以后,我什么也做不了。我需要单击dynshlp\u sel\u 2-rowsel
。但是
程序不会单击元素,也不会显示任何错误,除非我关闭新窗口
它抛出一个错误,说明在我关闭新窗口后无法定位元素
我是这个网站的新用户,我不知道如何添加这个问题的截图
HTML代码:
<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%;
从附带的代码中,我可以看到Onfocus事件被触发 处理这些事情,
关于,您用于将控件切换到弹出窗口的代码错误 请参阅下面的线程,了解如何将控件切换到新窗口 请参阅以了解有关弹出窗口处理的更多信息 编辑-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);
}
}
String mwh=driver.getWindowHandle();
设置s=driver.getWindowHandles();
//此方法将为您提供所有打开窗口的句柄
迭代器ite=s.Iterator();
while(ite.hasNext())
{
字符串popupHandle=ite.next().toString();
如果(!popupHandle.contains(mwh))
{
driver.switchTo()窗口(popupHandle);
//**在这里,您可以在弹出窗口中执行操作**
//在弹出窗口中完成操作后,只需再次选择主窗口
驱动程序切换到()窗口(mwh);
}
}
Hi,正如您所建议的,我使用了下面的鼠标事件,并尝试在新窗口中单击该元素。面对相同的问题,打开“新窗口”列表框后,程序甚至没有运行。WebElement we=driver.findElement(由.cssSelector(“a[id='C20_W57_V58_V59_V60_marketing_V60_struct.classific btn']>img:n个孩子(1)”);for(字符串句柄:driver.getWindowHandles()){driver.switchTo().window(句柄);}Actions action=newactions(driver);action.moveToElement(we).click().moveToElement(driver.findelelement(By.cssSelector(“a[id='dynshlp_sel_2rowsel']))))。click().build().perform();你好,桑托什。谢谢你的回复。但同样的问题依然存在。点击按钮后,将打开一个带有值的帮助窗口。在那之后,我什么都做不了。请帮我编辑我的答案并添加一些逻辑。嗨,桑托什,我已经根据你的建议更新了我的代码,但我仍然什么都做不了。我不知道控件是否更改为弹出窗口。打开弹出窗口后,我什么也做不了。当弹出窗口处于打开状态时,系统也不会显示任何错误。在我手动关闭弹出窗口之后。我我收到错误,因为无法对元素进行微调。打开弹出窗口后,请尝试打印窗口句柄大小。i、 例如,System.out.println(driver.getWindowHandles().size());你也可以在这里发布你的代码吗?打开新的弹出窗口后,我无法执行任何操作。我已附上我的代码,请在问题部分核对。
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);
}
}