#java #html #selenium #button
#java #HTML #selenium #кнопка
Вопрос:
Как нажать на button
с помощью приведенного ниже HTML-тега
<div class="_1WZqU PNlAR" role="button">OK</div>
Я попытался со следующими:
driver.findElement(By.xpath("//button[text()='OK']")).click();
driver.findElement(By.className("_1WZqU PNlAR")).click();
Я получил следующее сообщение об ошибке:
недопустимый селектор: составные имена классов не разрешены
Комментарии:
1. Добавьте исходный код HTML, отформатируйте свой код, добавьте дополнительную информацию, что
doesn't work
означает. Вы получаете исключение или элемент просто не нажат?2. Вы пытались щелкнуть с помощью javascript?
3. Фактическая ошибка, которую вы получаете, заключается в том, что вы ввели два имени класса
By.className()
. Вы должны выбрать один из классов или преобразовать его в CSS-селектор,By.cssSelector("._1WZqU.PNlAR")
.
Ответ №1:
попробуйте использовать, тега button нет в HTML
//div[text()='OK']
используйте этот код
driver.findElement(By.xpath("//div[text()='OK']")).click();
вы также можете использовать JavascriptExecutor
WebElement OKBtnElement = driver.findElement(By.xpath("//div[text()='OK']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", OKBtnElement );
Комментарии:
1. Хорошая уловка в
div
теге!2. Я не думаю, что следует использовать JavascriptExecutor, это не работает как обычный щелчок… Тем не менее, в некоторых случаях это неизбежно… Сначала OP должен попробовать
WebDriverWait
…3. IMO @MosheSlavin довольно правильно упомянул, что для того, чтобы высмеять поведение, подобное человеческому, сначала следует опробовать сильные, мощные и проверенные
click()
средства, а javascript наclick()
основе должен быть последним средством. В противном случае эти ответы не будут полезны будущим читателям и будут подвержены негативным отзывам.
Ответ №2:
Вам следует использовать WebDriverWait:
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[text()='OK']")));
element.click();
Надеюсь, это поможет вам!
Комментарии:
1. WebDriverWait неизбежен, поскольку элемент явно является динамически генерируемым элементом.