仅为Chrome获取org.openqa.selenium.InvalidSelectorException

时间:2016-08-02 14:01:41

标签: selenium selenium-chromedriver selenium-firefoxdriver

我想使用查找元素在网页中找到一个按钮,该页面可以包含以下按钮ID之一。

driver.findElements(By.xpath("//*[contains(@id,'topBtn')]")) driver.findElements(By.xpath("//*[contains(@id,'WSMplasticTop')]")) driver.findElements(By.xpath("//*[contains(@id,'bottomApplyBtn')]"))

当我使用Firefox驱动程序时,上面的代码正常运行,当我在Chrome驱动程序中运行时收到以下错误。

org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //*[contains(@id='bottomApplyBtn')] because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[contains(@id='bottomApplyBtn')]' is not a valid XPath expression.

只是想知道我是否犯了任何错误

2 个答案:

答案 0 :(得分:2)

尝试使用

'//*[contains(@id,'bottomApplyBtn')]'

而不是

'//*[contains(@id='bottomApplyBtn')]'

答案 1 :(得分:1)

当您在contains表达式中使用XPath方法时,您基本上使用内置method来查找元素。

此方法需要2个参数。

  1. 首先是您要搜索的标记。
  2. 其次是您在上述标记中寻找的实际文本值。
  3. 基本上你必须用2个参数调用方法,并且2个参数应该comma分开。

    所以//*[contains(@id='bottomApplyBtn')]错了,您应该删除此=符号。

    //*[contains(@id, 'bottomApplyBtn')]
                  |_______|____________________ Parameter 1
                          |__________________________________Parameter 2
    

    希望它有所帮助!