如何使用Selenium和Java单击文本为Ok的元素 已成功添加位置 状态标签 “确定”按钮消息的详细HTML标记 name=“alert1579246138835”在刷新页面时正在更改 页面上显示了弹出/警报的HTML

如何使用Selenium和Java单击文本为Ok的元素 已成功添加位置 状态标签 “确定”按钮消息的详细HTML标记 name=“alert1579246138835”在刷新页面时正在更改 页面上显示了弹出/警报的HTML,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,所需元素是一个动态元素,因此要在元素上定位并单击(),您必须为元素导入WebDriverWait以使其可伸缩(),并且您可以使用以下任一选项: css选择器: <div id="RadWindowWrapper_alert1579252675818" class="RadWindow RadWindow_Metro rwNormalWindow rwTransparentWindow" unselectable="on" style="width: 398px; height: 148p

所需元素是一个动态元素,因此要在元素上定位并单击(),您必须为
元素导入WebDriverWait以使其可伸缩()
,并且您可以使用以下任一选项:

  • css选择器

    <div id="RadWindowWrapper_alert1579252675818" class="RadWindow RadWindow_Metro rwNormalWindow rwTransparentWindow" unselectable="on" style="width: 398px; height: 148px; position: absolute; transform: none; backface-visibility: visible; touch-action: none; visibility: visible; left: 84px; top: 113px; z-index: 3012;"><table cellspacing="0" cellpadding="0" class="rwTable" style="height: 148px;"><tbody><tr class="rwTitleRow"><td class="rwCorner rwTopLeft">&nbsp;</td><td class="rwTitlebar" style="cursor: move;"><div class="rwTopResize"><!-- / --></div><table align="left" cellspacing="0" cellpadding="0" class="rwTitlebarControls"><tbody><tr><td style="width: 16px;"><a class="rwIcon"></a></td><td><em unselectable="on" style="width: 318px;">Automax Message</em></td><td nowrap="" style="white-space: nowrap;"><ul class="rwControlButtons" style="width: 32px;"><li><a href="javascript:void(0);" class="rwCloseButton" title="Close"><span>Close</span></a></li></ul></td></tr></tbody></table></td><td class="rwCorner rwTopRight">&nbsp;</td></tr><tr class="rwContentRow"><td class="rwCorner rwBodyLeft">&nbsp;</td><td class="rwWindowContent" valign="top"><iframe name="alert1579252675818" src="javascript:'<html></html>';" frameborder="0" style="width: 100%; height: 100%; border: 0px; display: none;"></iframe><div id="alert1579252675818_content" style="">
        <div class="rwDialogPopup radalert" style="background-image: url(&quot;../Images/InteractionImages/AutomaxSuccess.png&quot;);">         
            <div class="rwDialogText" id="alert1579252675818_message">
            Location added successfully<br><br>             
            </div>
    
            <div>
                <a onclick="$find('alert1579252675818').close(true);" class="rwPopupButton" href="javascript:void(0);" tabindex="-1">
                    <span class="rwOuterSpan">
                        <span class="rwInnerSpan">Ok</span>
                    </span>
                </a>                
            </div>
        </div>
        </div></td><td class="rwCorner rwBodyRight">&nbsp;</td></tr><tr class="rwStatusbarRow" style="display: none;"><td class="rwCorner rwBodyLeft">&nbsp;</td><td class="rwStatusbar"><table align="left" cellspacing="0" cellpadding="0" style="width: 100%;"><tbody><tr><td style="width: 100%;"><input id="alert1579252675818_status" readonly="" unselectable="on" tabindex="-1"><label for="alert1579252675818_status" style="display: none;">status label</label></td></tr></tbody></table></td><td class="rwCorner rwBodyRight">&nbsp;</td></tr><tr class="rwFooterRow"><td class="rwCorner rwFooterLeft">&nbsp;</td><td class="rwFooterCenter">&nbsp;</td><td class="rwCorner rwFooterRight">&nbsp;</td></tr></tbody></table></div>
    
  • xpath

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.rwPopupButton > span.rwOuterSpan > span.rwInnerSpan"))).click();
    

不要查看整个
驱动程序
,查找包含
rwDialogText
元素作为父元素的
span
元素。您是否尝试直接引用“确定”按钮?检查Chrome上的元素,复制xPath?@DeaneKane也尝试过,您可以尝试使用xPath“//span[.='Ok']”“@Jayaram Ganeshan请不要忘记标记解决问题的答案。请参阅:预期条件失败,上面的“Ok”消息出现在一个框架下,因此我在驱动程序之后和之前尝试了给定的xpath和css选择器。切换到().defaultContent();如果元素位于
中,则代码行肯定会失败<代码>切换到().defaultContent()不是切换到任何帧的理想方式。你能用
的HTML更新问题吗?你更新的HTML似乎无效。除了手工制作,你能复制网页中的HTML吗?HTML是用更新的HTML复制的。我在这个答案中提供的定位器仍然有效,因为元素在
标记之外。当弹出窗口/警报出现/显示在页面上时,您是否收集HTML?您能否使用答案中的定位器通过Chrome开发工具定位弹出/警报?
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='rwPopupButton']/span[@class='rwOuterSpan']/span[@class='rwInnerSpan' and text()='Ok']"))).click();