如何使用Selenium和Java单击文本为Ok的元素

问题描述 投票:1回答:1
<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>
  1. [确定]按钮消息的详细HTML标记。
  2. name =“ alert1579246138835”在刷新页面时正在更改。
  3. 用于弹出窗口/警报的HTML存在/在页面上可见
java selenium xpath css-selectors webdriverwait
1个回答
2
投票

所需的元素是动态元素,因此必须在元素上定位click()并为elementToBeClickable()引入WebDriverWait,并且可以使用以下Locator Strategies中的任何一个:

  • cssSelector

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

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='rwPopupButton']/span[@class='rwOuterSpan']/span[@class='rwInnerSpan' and text()='Ok']"))).click();
    
© www.soinside.com 2019 - 2024. All rights reserved.