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);
        }
    }