2013-10-11 2 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 changing.Selenium Webdriver - (Java) - нажмите кнопку с динамическим идентификатором

Ниже приведен исходный код страницы
`

<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 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, спасибо за Ваш ответ. Просмотрите мой комментарий выше в ответ на ответ Лефло и посмотрите, сможете ли вы помочь. Большое спасибо! –

1

Вы можете непосредственно проверить текст в вашем Xpath:

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

Привет, Лефло, спасибо за ваш ответ. Я пробовал ваш код, но он не распознал кнопку «Да». Я считаю, что есть некоторая проблема с окном «frame» и «popup». можете ли вы рассмотреть мой другой вопрос, основанный на том же 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(); 
Смежные вопросы