我正在尝试使用Java和Selenium单击带空格的超链接。这是代码示例
<h3 class="side menu">
<a class="side-menu" href="/configurations">
<span class="menu-icon ca"></span>Configuration
</a>
</h3>
我尝试使用xpath starts-with并没有运气。
driver.findElement(By.xpath("//a[starts-with(text(),’Configuration’)]")).click();
答案 0 :(得分:1)
要处理动态元素,请在预期条件下使用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()
答案 1 :(得分:0)
我认为您所需要的只是添加一个正斜杠:
driver.findElement(By.xpath("//a[starts-with(text(),'/configuration')]")).click();
如果我输入以下内容,它将在Chrome控制台中对我有效:
$x("//a[starts-with(@href,'/configuration')]")
答案 2 :(得分:0)
在为文本编写xpath时,我会使用normalize-space,它将修剪开头和前面的白色字符(空格/制表符/换行符)
这是您应该如何处理的问题。
//a[normalize-space(.)='Configuration']
已使用javascript在chrome控制台中成功为click()测试了xpath。