#java #selenium #xpath
#java #селен #xpath
Вопрос:
рассмотрим этот простой html.
<div role="label">
<label>Names</label>
</div>
<div role="input">
<input type="names">
</div>
У меня есть такой код
WebElement input= "inputXpathString";
input.sendKeys("Sam Winchester")
Это отправляет правильное имя, однако, когда имя отправляется в поле ввода, отображается выпадающий список с указанием имени. Как мне обработать выпадающий список?
Я пробовал input.sendKeys(Down, Return)
, это не работает. Я также пробовал, щелкая в любом месте страницы, это тоже не помогает.
Что еще я могу сделать?
Комментарии:
1. Может быть, попробуйте отправить ключи enter. Также какой это сайт.
2. Я уже пробовал
input.sendKeys(Down, Return)
, не могу поделиться сайтом. его внутреннее.3. Как реализован выпадающий список? Попробуйте щелкнуть с помощью input.click().
4. похоже, это собственный элемент управления браузером. (автоматическое предложение) Это не является частью DOM, поэтому у Selenium нет к нему доступа. (Как и другие веб-сайты, и это хорошо. Это сохраняет «песочницу» нетронутой.) Ключи отправки могут работать … не совсем уверен … кажется, что-то, что они предотвратили бы, но вы могли бы попробовать input.SendKeys(ключи. ARROW_DOWN) и input.SendKeys(ключи. ВВЕДИТЕ) Если веб-сайт реализует собственное автоматическое предложение, это будет в DOM.
Ответ №1:
Пожалуйста, попробуйте использовать приведенный ниже код, используя интерфейс JavascriptExecutor:
WebElement input = driver.findElement(By.xpath(""));
//casting a driver instance into JavascriptExecutor instance
JavascriptExecutor js = (JavascriptExecutor) driver;
//set the dropdown value to 'Sam Winchester' using javascript
js.executeScript("arguments[0].value='Sam Winchester'", input);