<span class="left-menu-title selectorgadget_selected" data-xpal="xpath-verify-selected" style="">Admin</span>
如何编写XPath或CSS表达式?我试过插件不起作用。
如果有人知道如何在登录网站后点击左侧栏中的项目将会有很大帮助。它没有单击,脚本失败。
@FindBy(xpath = "//SPAN[@class='left-menu-title'][text()='Admin']")
WebElement clickOnAdmin;
public WebElement adminClick() {
return clickOnAdmin;
}
答案 0 :(得分:4)
有多个课程,但您只检查left-menu-title
。
SPAN
代码名称的情况也可能是问题depending on a driver。
修正版,使用contains()
(请注意,这不是理想的class
XPath检查 - 严格来说,您是need the concat
and normalize-space
:
//span[contains(@class, 'left-menu-title')][text()='Admin']
答案 1 :(得分:0)
@alecxe所写的是一个非常好的指针。
通常当网站具有嵌入了数据+ JS的强大前端代码时,您应该使用功能。特别是当绝对xpath不起作用时,例如前端数据var的情况。 &#34;数据XPAL =&#34; XPath的验证选择&#34;
还请确认您的应用或网站是否未嵌入iFrame。 如果是这样,请更改iframe窗口。
如果可以提供stackTrace错误。我假设你在谈论NullPointerException或NotFindElementException。
答案 2 :(得分:0)
根据您共享的HTML
,以下代码块必须正常工作:
@FindBy(xpath = "//span[@class='left-menu-title selectorgadget_selected' and contains(.,'Admin')]")
WebElement clickOnAdmin;
public WebElement adminClick() {
clickOnAdmin.click();
}
注意:当您将该函数命名为
adminClick()
时,假设您要在click()
WebElement
上调用clickOnAdmin
方法,click()
方法无法返回任何内容。因此你也必须丢弃return clickOnAdmin;
语句。
答案 3 :(得分:0)
我建议尝试将您的XPATH写为//span[contains(@class,'left-menu-title') and .='Admin']
而不只是element.click();
使用javascript执行器点击。就像下面的情况一样:
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", driver.findElement(By.xpath("//span[contains(@class,'left-menu-title') and .='Admin']")));
希望这适合你!让我知道。