2014-05-23 3 views
6

При попытке автоматизировать наше приложение есть две кнопки с одинаковым именем.Как получить доступ ко второму элементу с тем же именем класса в селене с помощью java

Я не могу найти способ их распознать. Пожалуйста, дайте мне знать, какими могут быть другие способы идентификации этих элементов в selenium webdriver в java.

+1

Пожалуйста, разместите HTML-источник этих двух кнопок –

+0

Требуется HTML-фрагмент. Сначала взгляните на http://stackoverflow.com/a/23819540/2504101 – olyv

ответ

11

Вы можете использовать опцию индексации xpath.

By.xpath("(//input[@name='Button'])[2]") 
1

Вы можете пойти с xpath всегда, если нет уникальности с атрибутом. Напр. если вы хотите, чтобы найти элемент, который имеет текст foo и имя button тогда я предпочитаю, как показано ниже XPath, если имя не является уникальным там:

//*[@name='button' and text()='foo'] 

Или для другого класса, но тем же именем

//button[@name='button' and @class='xyz'] 

или для другого текста, но таким же имени

//input[@name='button' and contains(text(),'Click Here')] 

или для различных тегов, но таким же имени

//button[@name='button'] 
//input[@name='button'] 

Просто пойдите с любым уникальным свойством и сделайте индивидуальный xpath.

Надеюсь, вы также можете использовать скрипт java для этого, например, для.

WebElement butttonToClick = driver.findElement(By.name("button")); 
((JavascriptExecutor)driver).executeScript("arguments[1].click();",butttonToClick); 

Где arguments[1] означает второй элемент с таким же именем.

0

Вы можете использовать методы xpath, такие как следующие-братья/предыдущие братья и сестры.

Например, если кнопка расположена к любому уникальному веб-элементу, попробуйте сначала идентифицировать этот веб-элемент и с помощью разных методов xpath, таких как следующие-братья и сестры, контент, предшествующие братья и сестры, вы можете получить доступ к веб-элементу.

Смежные вопросы