【问题标题】:CSSSelector unable to locate element with name parameterCSSSelector 无法使用名称参数定位元素
【发布时间】:2014-03-10 05:13:56
【问题描述】:

我有一页有 5 个按钮,我需要找到名称为“搜索”的按钮(前导和尾随空格)

当我尝试这两种方法时(打印名称仅用于测试目的):

System.out.println(driver.findElements(By.cssSelector("a.gxi-button")).get(1).getText());
System.out.println(driver.findElement(By.cssSelector("a.gxi-button[name=' Search ']")).getText());

对于第一个命令,它的 reutrning 文本“搜索”,但对于第二个命令,它抛出异常“org.openqa.selenium.NoSuchElementException”

有人可以指导我在这里做错了什么。似乎前导和尾随空格在这里引起了问题。谁能指导如何处理这个问题? 注意:我已经尝试使用“搜索”和“搜索”,并且在这两种情况下都得到相同的异常

【问题讨论】:

  • “我可以在“搜索”前面看到一些空格。这是造成问题的原因吗?” - 好吧,你没试过吗?
  • 如果在选择器中使用双引号而不是单引号会怎样? By.cssSelector("a.gxi-button[name=\" Search \"]")

标签: java selenium-webdriver css-selectors


【解决方案1】:

您只需使用*= 执行部分匹配。

System.out.println(driver.findElement(By.cssSelector("a.gxi-button[name*='Search']")).getText());

或者使用 XPath(如果上述方法仍然不起作用)

driver.findElement(By.xpath(".//a[@class='gxi-button' and contains(@name, 'Search')]")).getText();

或者使用XPath的normalize-space函数

driver.findElement(By.xpath(".//a[@class='gxi-button' and normalize-space(@name)='Search']).getText();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2018-12-29
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2021-02-11
    • 2021-08-19
    相关资源
    最近更新 更多