2017-01-12 5 views
0

Как я могу нажимать на разные элементы с разными значениями атрибутов id в Selenium Framework? Значение ссылки ahref - это тот же текст.Selenium Нажмите другой идентификатор ссылки

<li> 
<a id="abc_differentName_1_default_fun" href="javascript:startClient('abc_differentName_1', 'default', 'fun');">Start</a> 
</li> 

<li> 
<a id="abc_differentName_2_default_fun" href="javascript:startClient('abc_differentName_2', 'default', 'fun');">Start</a> 
</li> 

<li> 
<a id="xyz_differentName_xyz_default_fun" href="javascript:startClient('xyz_differentName_xyz', 'default', 'fun');">Start</a> 
</li> 

Я не хочу создавать каждую ссылку одним кликом.

Мои проблемы: Я не хочу создавать каждый метод ссылок одним кликом. Я хочу, чтобы один клик-метод зависел от имени идентификатора. Можно создать пример метода click: void clickByIdName (String idName)? Зависит от того, какую ссылку я щелкнул, он откроет новые окна (другой объект страницы).

Большое спасибо в Advance.

+0

Что делать вы имеете в виду «нажимаете на другой идентификатор ahref»? Вы имеете в виду элементы 'a' с разными значениями атрибутов id? – Andersson

+0

Да. Я подумываю щелкнуть по элементу id, который отличается на странице. Весь текст ссылки имеет тот же самый «Старт». – zoram

ответ

0

Вы можете использовать селектор CSS, чтобы найти все элементы с идентификатором содержать что-то вроде:

driver.findElements(By.cssSelector("[id*=_differentName_]")) 

Если вы хотите void clickByIdName(String idName)

void clickByIdName(String idName) { 
    driver.findElement(By.Id(idName)).click(); 
} 
+0

... и снова - закрывающая скобка :) – Andersson

+1

Я ждал вашего комментария :) –

+0

Спасибо. Мои проблемы: я не хочу создавать каждый метод ссылки одним кликом. Я хочу, чтобы метод одного клика зависел от имени идентификатора. Можно создать пример метода click: void clickByIdName (String idName)? – zoram

0

Если имеется несколько ссылок с подобным текстом на странице, вы можете используйте значение id для выбора каждого элемента следующим образом:

driver.findElement(By.cssSelector("a#abc_differentName_1_default_fun")).click(); 
driver.findElement(By.cssSelector("a#abc_differentName_2_default_fun")).click(); 
driver.findElement(By.cssSelector("a#xyz_differentName_xyz_default_fun")).click(); 
+0

Спасибо.Мои проблемы: я не хочу создавать каждый метод ссылки одним кликом. Я хочу, чтобы метод одного клика зависел от имени идентификатора. Можно создать пример метода click: void clickByIdName (String idName)? – zoram

+1

Да, попробуйте 'public void clickByIdName (String idName) {driver.findElement (By.id (idName)). Click(); } ' – Andersson

+0

спасибо! теперь я использую как здесь, в моих тестовых случаях. Считаете ли вы, что это плохой тестовый метод/тестовый код? pageObject.clickByGameName ("abc_gameName_default_funMode"); pageObject.clickByGameName ("abc_gameName_default_moneyMode"); – zoram

0

Вам не нужно использовать эти значения атрибута ID, чтобы найти элементы ссылок. Есть лучший способ - текст ссылки локатор. Вы можете найти все ссылки с Start текстом ссылки и выбрать, какой из них вы должны получить его по индексу:

List<WebElement> links = driver.findElements(By.linkText("Start")); 
links.get(0).click(); 
+0

Спасибо. Мои проблемы: я не хочу создавать каждый метод ссылки одним кликом. Я хочу, чтобы метод одного клика зависел от имени идентификатора. Можно создать пример метода click: void clickByIdName (String idName)? – zoram

+0

спасибо! теперь я использую как здесь, в моих тестовых случаях. Считаете ли вы, что это плохой тестовый метод/тестовый код? pageObject.clickByGameName ("abc_gameName_default_funMode"); pageObject.clickByGameName ("abc_gameName_default_moneyMode"); – zoram

0

Не уверен, что это точно проблема здесь, но то, что случилось с этим:

driver.findElement(By.id("abc_differentName_1_default_fun")).click(); 
driver.findElement(By.id("abc_differentName_2_default_fun")).click(); 
driver.findElement(By.id("xyz_differentName_xyz_default_fun")).click(); 
+0

спасибо! теперь я использую как здесь, в моих тестовых случаях. Считаете ли вы, что это плохой тестовый метод/тестовый код? pageObject.clickByGameName ("abc_gameName_default_funMode"); pageObject.clickByGameName ("abc_gameName_default_moneyMode"); – zoram

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