2016-04-18 2 views
0

Как выбрать значение из раскрывающегося списка, если идентификатор селектора повторяется на странице регистрации? Я пишу сценарий сценария в веб-драйвере селена для получения значения из выпадающего элемента управления, но всегда элемент, который не находит исключение.Проблемы с выбором значения из раскрывающегося списка в selenium webdriver

Код,

Select dropdown = new Select(driver.findElement(By.id("cat_id"))); 
dropdown.selectByIndex(1); 

Страница таргетингом: http://talentrack.in/register

+0

Структура кода, как этот <выберите идентификатор = класс "cat_id" = "вход-управления REQ заполнителем-цвет" OnChange = "возвращение show_others (this.value);» data-message = "required" name = "cat_id"> select id повторяется дважды на странице –

+0

Вы говорите, что несколько элементов select имеют одинаковый атрибут id? Если это так, то это неверный HTML-код, и вы должны сказать разработчикам, чтобы это исправить. Или вы указываете, что «cat_id» появляется дважды в элементе select выше? атрибуты id и name имеют разные атрибуты, и для них нормально иметь одинаковое значение. –

+0

@Yogesh Не могли бы вы добавить свой тестовый код и HTML, на который он нацелен, на ваш вопрос? – sowa

ответ

0

Простое решение вашей проблемы с помощью CSS или XPath селекторов:

Select dropdown = new Select(driver.findElement(By.cssSelector("#cat_id.req"))); 
dropdown.selectByIndex(1); 

Прежде чем пытаться писать больше код Я настоятельно рекомендую вам узнать, как использовать селектор css и xpath. Отличное место для начала - here.

Вы также должны рассмотреть возможность установки FirePath Firefox plug-in, так как это отличный инструмент для повышения скорости обучения.

Edit:

Вот мой полный код:

import org.junit.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.Select; 
import org.openqa.selenium.support.ui.WebDriverWait; 

public class test{ 

private WebDriver driver; 
private WebDriverWait wait; 

    @Test 
    public void main() throws InterruptedException{  
    driver = new ChromeDriver(); 
    wait = new WebDriverWait(driver, 30); 
    driver.manage().window().maximize(); 
    driver.get("http://talentrack.in/register"); 
    wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#cat_id.req"))); 
    Select dropdown = new Select(driver.findElement(By.cssSelector("#cat_id.req"))); 
    dropdown.selectByIndex(5); 
    Thread.sleep(5000); 
    driver.close(); 
    }} 
+0

Thanx для ответа, но все же я получаю то же исключение, org.openqa.selenium.NoSuchElementException: Не удалось найти элемент: {"method": «css selector», «selector»: «# cat_id.req»} Длительность или тайм-аут команды: 16 миллисекунд, я попробовал все селектор –

+0

На самом деле есть еще одно скрытое выпадающее управление с одинаковыми идентификаторами выбора на странице, поэтому может будь то прерывание исполнения. вот URL http://talentrack.in/register –

+0

Селекторы CSS работают отлично для меня - я обновил свой ответ с полным кодом. (пожалуйста, не используйте thread.sleep в нашем фактическом тесте) – Angusiasty