2013-10-11 67 views
0

1)我在我的網頁上有一個dialog有2個按鈕,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)
部分1381468352443在XPath是dynamically changingSelenium Webdriver - (Java) - 點擊一個帶有動態ID的按鈕

下面是
頁 `

<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>` 

感謝的源代碼提前!

回答

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

一旦你得到元素,你可以採取任何行動。

+0

Varun的您好,感謝您的回覆。 請回顧我上面的評論回覆Lefloh的回答,看看你能否提供幫助。 非常感謝! –

1

您可以直接查看您所在的XPath文本:

driver.findElements(By.xpath("//a[@class='rwPopupButton']/span/span[contains(text(), 'Yes')]")) 
+0

嗨萊夫洛,謝謝你的回覆。 我試過了你的代碼,但沒有認出「Yes」按鈕。我相信「框架」和「彈出」窗口存在一些問題。你能否根據同一個senario來回顧我的另一個問題? 這裏是其他問題的鏈接: http://stackoverflow.com/q/19354893/1533847 非常感謝! –

1

沒有找到使用部分鏈接文本對象的方式,所以你可以試試這個:

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

平原。 linkText可能無法工作,因爲鏈接中有額外的空格或字符。

-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(); 
相關問題