Я пытаюсь нажать на гиперссылку с пробелом, используя Java и Selenium. Вот пример кода
<h3 class="side menu"> <a class="side-menu" href="/configurations"> <span class="menu-icon ca"></span>Configuration </a> </h3>
Я пытался использовать xpath, начальный и содержащий безуспешно.
driver.findElement(By.xpath("//a[starts-with(text(),’Configuration’)]")).click();
Для обработки динамического элемента используйте WebDriverWait и elementToBeClickable с ожидаемыми условиями. Используйте следующие стратегии Xpath locator.
WebDriverWait
elementToBeClickable
Xpath
WebDriverWait wait = new WebDriverWait(driver, 30); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath('//a[@class="side-menu"][normalize-space(.)="Configuration"]'))); element.click()
OR
WebDriverWait wait = new WebDriverWait(driver, 30); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath('//a[@class="side-menu"][contains(.,"Configuration")]'))); element.click()
Я бы использовал normalize-space при написании xpath для текста, который обрежет первые и предшествующие белые символы (пробелы / табуляции / новые строки)
Вот как вы должны это сделать в своем вопросе.
//a[normalize-space(.)='Configuration']
Протестировал xpath в консоли Chrome на предмет click (), успешно используя javascript.
Я думаю, все, что вам нужно, это добавить косую черту:
driver.findElement(By.xpath("//a[starts-with(text(),'/configuration')]")).click();
Это работает для меня в консоли Chrome, если я наберу:
$x("//a[starts-with(@href,'/configuration')]")