如果页面中有一个元素如下(有多个选择元素)
<select size="1" name="j_id0:j_id2:j_id37:j_id38:0:j_id41">
<select size="1" name="j_id0:j_id2:j_id37:j_id38:1:j_id41">
唯一的标识符是它的名称,但名称会动态更改,如何在不引用名称的情况下在selenium(java)中找到它?
我目前正在使用xpath,如下所示
/html/body/div/div[2]/table/tbody/tr/td[2]/form/div[3]/div/div/div/div[2]/div[1]/span[3]/select
问题是如果页面上的任何内容发生变化,这个xpath将会中断。
是否有更好的替代方法不容易被打破?
答案 0 :(得分:0)
您已正确注意到所提供的XPath非常脆弱。查看页面的完整HTML,或者至少是select
元素的前后元素也是有用的。根据我们现在的情况,您可以依赖name
属性的一部分:
//select[contains(@name, "j_id")]
答案 1 :(得分:0)
我认为您网站上的所有ID都不是动态的。
因此,有一种更清晰的方式来编写定位器。
提供更多的html结构,我可以为您提供更多详细信息。
答案 2 :(得分:0)
试试..这些选择标签必须有一些标签相关联。使用以下兄弟和祖先xpath轴来相对于标签定位元素。