Java Selenium-如何与无id/无类元素交互?

Java Selenium-如何与无id/无类元素交互?,java,selenium,firefox,automation,Java,Selenium,Firefox,Automation,我正在尝试与页面上的按钮进行交互Linktext和xpath不起作用,没有选择元素并在其中循环的类或组合,我可以找到它的作用 这是我正在尝试执行的代码的屏幕截图。。单击() 请帮助我如何实现同样的目标?我认为您有以下两种选择。我简化了示例HTML代码以冒烟测试这些查询: 根据元素的内容选择元素。缺点当然是,一旦“历史扫描”标签更改为其他内容,您的查询就会停止工作 //nav[@id='secondaryNav']//ul[contains(@class,“menu”)]//a[normaliz

我正在尝试与页面上的按钮进行交互
Linktext
xpath
不起作用,没有选择元素并在其中循环的类或组合,我可以找到它的作用

这是我正在尝试执行的代码的屏幕截图。
。单击()


请帮助我如何实现同样的目标?

我认为您有以下两种选择。我简化了示例HTML代码以冒烟测试这些查询:

  • 根据元素的内容选择元素。缺点当然是,一旦“历史扫描”标签更改为其他内容,您的查询就会停止工作

    //nav[@id='secondaryNav']//ul[contains(@class,“menu”)]//a[normalize space(.)=“Historical Scans”]

  • (XPathTester上的工作示例)

  • 根据列表上的位置选择元素。缺点是一旦该元素改变位置,它就会停止工作

    //nav[@id='secondaryNav']//ul[contains(@class,“menu”)]/li[3]/a

  • ()


    根据我的经验,您不应该依赖任何其他属性或元素。理想情况下,最好的选择是添加ID/类。请告诉我们这是否解决了您的问题。

    您尝试了哪种xpath?plz提到了同样的方法,也添加了
    html
    而不是图像。这是Java还是JavaScript?我相信感谢您的时间,我已经尝试使用xpath使用这两个选项进行选择,并且在这两种情况下都会抛出NoTouchElementException。我真的很想避免在浏览器上单击坐标,但我已经没有选择了。请粘贴整个页面的HTML代码,或者可能只是其中的一部分。我还看到页面使用angularjs,当selenium尝试单击它时,元素可能还不可见?(例如,ng show指令驱动元素的可见性)我必须检查零件,因为共享的不是我的零件。看起来我在inspector中找到的那些药剂不在html源代码中。代码太长,无法在此处发布。请改为尝试://nav[@id='secondaryNav']//ul[contains(@class,“menu”)]//a[normalize space(.)=“historic Scans”]或只//a[normalize space(.)=“historic Scans”]我更新了以前的答案,我没有更好的主意(我添加了normalize space)。如果在selenium尝试查找该元素时显示该元素,那么它肯定会起作用。