1)我的网页上有一个dialog
,有两个按钮Yes
& No
。
2)这些按钮的IDs
每次动态变化
3)如何处理这种情况并单击Yes
按钮?
4)两个按钮,Yes
& No
,具有相同的classname
1.e. rwInnerSpan
5)以下是Xpath
按钮的Yes
(.//*[@id='confirm1381468352443_content']/div/div[2]/a[1]/span/span)
xpath中的1381468352443
部分为dynamically 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>`
先谢谢!!
答案 0 :(得分:1)
您可以直接检查Xpath中的文本:
driver.findElements(By.xpath("//a[@class='rwPopupButton']/span/span[contains(text(), 'Yes')]"))
答案 1 :(得分:1)
有一种方法可以使用部分链接文本查找对象,因此您可以尝试:
driver.findElement(By.partialLinkText("Yes")).click();
Plain By.linkText可能无法正常工作,因为链接中有额外的空格或字符。
答案 2 :(得分:-1)
您可以根据文本单击按钮。以下方法将根据类定位器和文本为您提供一个webelement。
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")
}
获得元素后,您可以对其采取任何操作。
答案 3 :(得分:-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();