XPath - выпадающие списки - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в тестировании автоматизации Selenium.Попытка найти Xpath из двух раскрывающихся списков в нашем веб-приложении, но пока не повезло;Вот HTML-код обоих;В приведенном ниже HTML я пытаюсь создать Xpath, используя уникальный атрибут @Placeholder;все остальное встречается в обоих случаях, но не получилось правильно;Каждый раскрывающийся список имеет набор значений, и я пытаюсь получить эти значения, используя методы «Выбрать», «Пробные», «Начать с», а также.

Просьба предоставить ваши добрые предложения и советы.

   <input class="form-control bootstrap-typeahead-input-main" type="text" placeholder="Alpha Type" autocomplete="off" value="" style="background-color: transparent; display: block; position: relative; z-index: 1;">

   <input class="form-control bootstrap-typeahead-input-main" type="text" placeholder="Beta Type" autocomplete="off" value="" style="background-color: transparent; display: block; position: relative; z-index: 1;">

Вот последняя комбинация, которую я делаю;

@FindBy(how= How.XPATH, using="//input[contains(@placeholder='Alpha Type')]")
@FindBy(how= How.XPATH, using="//input[contains(@placeholder='Beta Type')]")

Использование Select после нахождения Xpath для получения значений раскрывающегося списка;

  Select drpAlphaType = new Select(AlphaType);
  drpEnqType.selectByValue("XYZ");

Ответы [ 3 ]

0 голосов
/ 12 июня 2018

Вы используете select, но это неправильно, потому что согласно вашей ошибке:

org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "input"

Этот элемент является входным.Поэтому попробуйте справиться с этим так:

@FindBy(how= How.XPATH, using="//input[@placeholder='Alpha Type']") private WebElement alphaType;
@FindBy(how= How.XPATH, using="//input[@placeholder='Beta Type']") private WebElement betaType;

WebDriverWait waitAlpha = new WebDriverWait(webDriver, 5); // 5 seconds
waitAlpha.until(ExpectedConditions.elementToBeClickable(alphaType)); //wait until element clickable
alphaType.click();
alphaType.sendKeys("your string"); //write 'your string' in input field

WebDriverWait waitBeta = new WebDriverWait(webDriver, 5);
waitBeta.until(ExpectedConditions.elementToBeClickable(betaType));
betaType.click();
betaType.sendKeys("your string");

После этого должен выпадать список значений, который должен располагаться отдельно.

0 голосов
/ 14 июня 2018

Спасибо за поддержку и советы.Проблема решена с одним дополнительным шагом, который я добавил.Ранее было правильно указано, что Xpath указывает на элемент ввода, но ожидалось «Select»

, т.е. org.openqa.selenium.support.ui.UnexpectedTagNameException: Элемент должен был быть «select», но был «input "

Чтобы попробовать альтернативы, я отбросил идею использования класса" Select ", но просто для ввода значений.При добавлении двух XPATH (один для поля ввода / раскрытия и другой для значения в этом раскрывающемся списке) и щелчка по обоим в последовательности.Теперь мой код выглядит так;

AlphaType.click(); AlphaType.findElement(By.xpath("//div[@id='home-tabs-pane-0']/div/div[4]/div[3]/div[2]/div/div/div/form/div[3]/div[2]/ul/li[3]/a/span")).click(); Thread.sleep(2000);

То же самое касается другого, то есть бета-типа.Пожалуйста, поделитесь мыслями, если есть еще улучшенный способ сделать это.

0 голосов
/ 12 июня 2018

XPath's contains() - это подстрока test - не то, что вам нужно.

Измените

//input[contains(@placeholder='Alpha Type')]

на

//input[@placeholder='Alpha Type']

для выбора всех элементов input со значением атрибута @placeholder "Alpha Type".

...