0

1)我的dialog网页上有一个有 2 个按钮的Yes& No
2)IDs这些按钮每次都动态变化。
3)如何处理这种情况并点击Yes按钮?
4) 两个按钮Yes&No具有相同的classname1.e。rwInnerSpan
5)这是xpath中 的部分的XpathforYes按钮。
(.//*[@id='confirm1381468352443_content']/div/div[2]/a[1]/span/span)
1381468352443dynamically changing

下面是页面的源代码
`

<tr class="rwTitleRow">  
<tr class="rwContentRow">  
<td class="rwCorner rwBodyLeft"> </td>  
<td class="rwWindowContent" valign="top">  
<iframe frameborder="0" name="confirm1381468352443" src="javascript:'<html></html>';" style="width: 100%; height: 100%; border: 0px none; display: none;" tabindex="0">
<div id="confirm1381468352443_content">  
<div class="rwDialogPopup">  
<div class="rwDialogText">  
<div>  
<a class="rwPopupButton" href="javascript:void(0);" onclick="$find('confirm1381468352443').close(true);" tabindex="-1">  
<span class="rwOuterSpan">  
<span class="rwInnerSpan">Yes</span>  
</span>    
</a>  
<a class="rwPopupButton" href="javascript:void(0);" onclick="$find('confirm1381468352443').close(false);" tabindex="-1">  
<span class="rwOuterSpan">  
<span class="rwInnerSpan">No</span>  
</span>  
</a>`

提前致谢 !!

4

4 回答 4

1

有一种方法可以使用部分链接文本来定位对象,因此您可以尝试以下操作:

driver.findElement(By.partialLinkText("Yes")).click();

由于链接中有额外的空格或字符,Plain By.linkText 可能不起作用。

于 2013-10-14T12:29:52.873 回答
1

您可以直接检查 Xpath 中的文本:

driver.findElements(By.xpath("//a[@class='rwPopupButton']/span/span[contains(text(), 'Yes')]"))
于 2013-10-11T07:46:16.100 回答
-1

由于它是动态的,我会寻找更改后的名称:

//Find the dynamicly created ID
String dynamicID = driver.findElement(By
    .xpath("//iframe[contains(@name,'confirm')]")
        .getAttribute("name");
//Use that ID to find the Yes option
driver.findElement(By
    .xpath("//*[@id='"+dynamicID +"_content']/div/div[2]/a[1]/span/span")
            .click();
于 2015-02-11T16:36:03.817 回答
-1

您可以单击基于文本的按钮。以下方法将为您提供基于类定位器和文本的 web 元素。

WebElement getElementBasedOnClassAndText(String classLocator, String text){
    List<WebElement> elements = driver.findElements(By.className(classLocator))
    for(WebElement element : elements){
        if(element.getText().contentEquals(text)){
            return element
        }
    }
    Assert.fail("Unable to find any element with the said Text")
}

获得元素后,您可以对其执行任何操作。

于 2013-10-11T07:23:28.143 回答