每次加载网页时,我都有这两个xpath不同。
xpath由Selenium-IDE记录,并且在id字符串中始终包含mainForm_view
,并且此前后的文本始终会更改。
xpath=//input[@id='abc_hyd_wuu2_8333nd_mainForm_view_jjd_uueue2_jjd_11_jkdhd']
xpath=//div[@id='abc_hyd_wuu2_8333nd_mainForm_view_kcjjcs_sjsjs_jjdj_994_kkk']/div/div[2]/div/div/div/a[1]/h2
我试图找到如下所示的ID,但不起作用。
xpath=//input[contains(@id,'mainForm_view')]
xpath=//div[contains(@id,'mainForm_view')]
哪种方法是正确的?
谢谢。
更新
我尝试过使用如下所示的CSS选择器,但似乎要使用id
元素内的另一个input
document.querySelector("input[id*='mainForm_view']").id
检查html代码,我发现我需要的id
与唯一的class
相关。代码如下:
<div class="Class_p2">
<div class="Class_p3" style="...">
<input name="8333nd$mainForm$view$jjd$uueue2" type="text" class="class a1 n1-Control" value="xyz" id="8333nd_mainForm_view_jjd_uueue2" disabled="disabled" style="..">
</div>
<input name="8333nd$mainForm$view$ttyi" type="text" disabled="disabled">
</div>
我已经在Chrome控制台中尝试了以下Javascript代码,但无法正常工作
document.getElementsByClassName("class a1 n1-Control").id
如何获得与id=8333nd_mainForm_view_jjd_uueue2
相关的Class=class a1 n1-Control
?
UPDATE2
我终于能够做到
document.getElementsByClassName("class a1 n1-Control")[0].id
感谢所有的帮助和时间。
答案 0 :(得分:1)
您可以将 css选择器编写为:
input[id*='mainForm_view']
对于div来说应该是:
div[id*='mainForm_view']
星号与子字符串部分匹配。
请注意,如果有任何ID包含也会被选中的 mainForm_view ,那么最好在继续操作之前检入开发人员工具。
答案 1 :(得分:0)
您可以尝试查找xpath / css定位符保持不变的其他元素,然后尝试从那里遍历到该元素。您可以使用parent,祖先,前兄弟,后兄弟关键字来遍历。希望对您有所帮助:)