Я использую последнюю версию selenium webdriver.
Селен не может найти элемент (поле ввода). Это html-код:
<input id="findPath" class="pathCom" type="text" style="width: 100%;
background-color: rgb(255, 255, 255);" name="$path$conFind"
value="find" data-ctl="["TextInput"]">
Я использую такой код селена:
driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");
Я также попробую найти идентификатор или css-локатор. Я подождал этого кода следующим образом:
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(" driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");")));
Я попытался использовать Selenium IDE, и он нашел этот элемент. Я понятия не имею, что это неправильно с webdriver. С кем сталкивалась такая проблема?
Причина, по которой ваш код не работает, объясняется очень простой ошибкой. Вы включили период в xpath
Ваш Code-
driver.findElement(By.xpath(".//input[@id='findPath']")).sendKeys("find");
Исправить Code-
driver.findElement(By.xpath("//input[@id='findPath']")).sendKeys("find");
Дайте мне знать, если он работает или нет!
Это не правильный способ использования sendkeys() в инструкции WebDriverWait
,
вы можете попробовать это,
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='findPath']"))).sendKeys("find");
если вы не используете переменную wait, вы можете избежать этого следующим образом
new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id='findPath']"))).sendKeys("find");
если вышеуказанный оператор работает, использование идентификатора определенно будет работать, а также улучшит производительность вашего кода.
new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.id("findPath"))).sendKeys("find");