选择一个没有特定id、类、xpath等的元素
Selecting an element with no particular id, class, xpath, etc
我目前正在为一个web应用程序编写测试自动化,该应用程序作为SWF文件加载给我们的最终用户,但是存在一个完全功能的Javascript版本,用于自动化的唯一目的。
我有办法通过键盘快捷键在应用程序中导航,但是当涉及到执行点击命令时,我一点也不幸运。在使用Firebug/Firepath进行检查时,我能找到的唯一值是xpath(不存在id,不存在类,实际上什么都没有)。
下一个问题是xpath本身。它是:
-
真的脆弱。
.//*[@id='flow']/div[1]/div/div[7]/div/div[3]/div[4]/div/div/div/div/div/div/div/div[3]/div[1]/img
-
这似乎是表示按钮的图像的xpath,而不是按钮本身。
在上述类型的xpath上执行.click()
命令将不会做任何事情,直到您手动将鼠标悬停在按钮上(不管moveToElement命令),它将"点击"图像,但不会运行任何功能。
所以我想知道在实际的JavaScript挖掘周围寻找标识符后,是否有任何方法通过任何其他属性选择一个元素?或者有什么方法可以更好地"识别"一个函数?也许可以找到图像所代表的按钮的xpath ?
使用JUnit和Java,如果有帮助的话。
谢谢
显然,我的评论回答了OP的问题,所以这里是,作为参考:
如果您需要"按钮本身",正如您在问题中所写的那样,请使用Inspect Element从浏览器中找出您需要的实际元素,然后简单地从XPath表达式的右侧删除足够的轴步骤,直到剩下的部分选择作为实际按钮元素的祖先元素。
现在你应该能够发送一个点击事件。
恐怕我们对XPath语句的"脆弱"无能为力,因为您没有标识符可以使用。这意味着,如果页面的结构发生变化,就必须更改XPath(除非某些祖先元素有一些值得注意的标识符)。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Javascript复选框函数:;缺少:在属性id之后"
- Twitter引导程序Typeahead-Id&标签
- 如何在具有相同id的多个元素的文档中获取元素的XPATH
- 选择一个没有特定id、类、xpath等的元素
- 如何找到一个随机ID的选择器,XPATH &;我正在用Selenium c#测试一个CMS工具
- 如何替换getElementById("id").使用XPath的textContent句子
- Selenium Webdriver没有基于文本、xpath或ID点击菜单项