选择一个没有特定id、类、xpath等的元素

Selecting an element with no particular id, class, xpath, etc

本文关键字:id xpath 元素 一个 选择      更新时间:2023-09-26

我目前正在为一个web应用程序编写测试自动化,该应用程序作为SWF文件加载给我们的最终用户,但是存在一个完全功能的Javascript版本,用于自动化的唯一目的。

我有办法通过键盘快捷键在应用程序中导航,但是当涉及到执行点击命令时,我一点也不幸运。在使用Firebug/Firepath进行检查时,我能找到的唯一值是xpath(不存在id,不存在类,实际上什么都没有)。

下一个问题是xpath本身。它是:

  1. 真的脆弱。

    .//*[@id='flow']/div[1]/div/div[7]/div/div[3]/div[4]/div/div/div/div/div/div/div/div[3]/div[1]/img
    
  2. 这似乎是表示按钮的图像的xpath,而不是按钮本身。

在上述类型的xpath上执行.click()命令将不会做任何事情,直到您手动将鼠标悬停在按钮上(不管moveToElement命令),它将"点击"图像,但不会运行任何功能。

所以我想知道在实际的JavaScript挖掘周围寻找标识符后,是否有任何方法通过任何其他属性选择一个元素?或者有什么方法可以更好地"识别"一个函数?也许可以找到图像所代表的按钮的xpath ?

使用JUnit和Java,如果有帮助的话。

谢谢

显然,我的评论回答了OP的问题,所以这里是,作为参考:

如果您需要"按钮本身",正如您在问题中所写的那样,请使用Inspect Element从浏览器中找出您需要的实际元素,然后简单地从XPath表达式的右侧删除足够的轴步骤,直到剩下的部分选择作为实际按钮元素的祖先元素。

现在你应该能够发送一个点击事件。

恐怕我们对XPath语句的"脆弱"无能为力,因为您没有标识符可以使用。这意味着,如果页面的结构发生变化,就必须更改XPath(除非某些祖先元素有一些值得注意的标识符)。