Selenium - Firefox - 带有Div标签的xpath问题SyntaxError:表达式不是合法表达式

时间:2015-08-07 10:08:43

标签: html firefox selenium xpath relative-path

虽然 Selenium

尝试自动化示例Qlikview网络报告,但我遇到了以下错误

浏览器: Firefox

FirePath返回的Xpath:

  .//*[@id='58']/div[2]/div/div[1]/div[4]/div[1]

例外:

  **Exception**: Exception in thread "main"                 
   org.openqa.selenium.InvalidSelectorException: The given    
   selector//[@id='58']/div[2]/div/div[1]/div[4]/div[1] is either invalid          
   or does not result in a WebElement. The following error occurred:      
   InvalidSelectorError: Unable to locate an element with the xpath       
   expression //[@id='58']/div[2]/div/div[1]/div[4]/div[1] because of the     
   following error:**SyntaxError: The expression is not a legal expression.**
   Command duration or timeout: 78 milliseconds
   For documentation on this error, please visit: http://seleniumhq.org       
   /exceptions/invalid_selector_exception.html
    Build info: version: '2.45.0', revision: '32a636c', time: '2015-03-05 22:01:35'

我尝试删除'。'来运行来自xpath,但仍然发生同样的错误。

代码示例:

//导航到第4季度结果

    driver.findElement(By.xpath("//[@id='58']/div[2]/div/div[1]/div[4]/div[1]")).click();
}

申请 http://us-b.demo.qlik.com/QvAJAXZfc/opendoc.htm?document=qvdocs%2FRetail%20Omni-Channel%20Analytics.qvw&host=demo11&anonymous=true

我正在尝试点击此应用程序上的Q4链接

请帮忙。

1 个答案:

答案 0 :(得分:1)

您必须在xpath中指定标记名称。你没有提到任何标签名称。您可以提供可以带任何标记的*

 //*[@id='58']

以上内容将匹配id = 58

的任何元素

您已使用

 //[@id='58']

其中标签名称丢失。因此它是一个无效的选择器。您必须提及*div等元素的正确tagName

使用以下行:

driver.findElement(By.xpath("//*[@id='58']/div[2]/div/div[1]/div[4]/div[1]")).click();

而不是:

 driver.findElement(By.xpath("//[@id='58']/div[2]/div/div[1]/div[4]/div[1]")).click();