如何编写 XPath 或 CSS 表达式


<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;
}

有多个类,但您只检查left-menu-title类。

SPAN标记名称的大小写也可能是一个问题,具体取决于驱动程序。

固定版本,使用contains()(请注意,这不是理想的class XPath检查 - 严格来说,您需要concatnormalize-space(:

//span[contains(@class, 'left-menu-title')][text()='Admin']

@alecxe写的是一个很好的指针。

通常,当一个网站有一个嵌入了data+JS的强大前端代码时,你应该使用功能。特别是当绝对 xpath 不起作用时,例如您在前端使用数据变量的情况。"data-xpal="xpath-verify-selected">

Guru99 xpath fonctionalities

  1. 另外,请验证您的应用程序或网站是否未嵌入 iFrame。如果是这样,请更改iframe窗口。

  2. 如果可以提供堆栈跟踪错误。我假设你说的是NullPointerException或NotFindElementException。

根据您共享HTML,以下代码块必须工作:

@FindBy(xpath = "//span[@class='left-menu-title selectorgadget_selected' and contains(.,'Admin')]") 
WebElement clickOnAdmin;
public WebElement adminClick() {
    clickOnAdmin.click();
}

注意:当你将函数命名为adminClick()时,假设你想在WebElement clickOnAdmin上调用click()方法,click()方法不会返回任何内容。 因此,您还必须丢弃 return clickOnAdmin; 语句。

我建议尝试将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']")));

希望这对你有用!让我知道。

最新更新