我试图在无序菜单列表中找到两个输入字段,但是Selenium无法找到它们。到目前为止,我已经尝试通过xpath和带有顺序标识符的类名称来查找它们
("//input[@class=x-form-text x-form-field][4]")
但它要么找不到元素,要么说元素格式不正确。我唯一获得的成功是使用id,但是每次加载页面时,最后的数字都会改变。
有什么方法可以让它找到菜单列表,列表项然后输入字段?我完全被困住了。
有关菜单列表的注意事项:它会根据分辨率更改大小,如果菜单尺寸变小得多,则会出现一个向下箭头图标,并且除非选择该向下按钮,否则列表底部的字段将消失。
这是html的示例:
<ul id="ext-gen406" class="x-menu-list">
<li id="ext-comp-1237" class="list-item ">
<li id="ext-comp-1238" class="list-item ">
<li id="ext-comp-1239" class="list-item ">
<li id="ext-comp-1240" class="list-item ">
<li id="ext-comp-1241" class="list-item ">
<li id="ext-comp-1242" class="list-item ">
<li id="ext-comp-1207" class="list-item sep-li">
<li id="ext-comp-1243" class="list-item ">
<li id="ext-comp-1244" class="list-item ">
<li id="ext-comp-1208" class="list-item sep-li">
<li id="ext-comp-1245" class="list-item ">
<li id="ext-comp-1246" class="list-item ">
<li id="ext-comp-1247" class="list-item ">
<div class='xtb-text'>Text Field Label</div>
<li id="ext-comp-1248" class="list-item ">
<div id="ext-gen424" class="x-form-field-wrap x-form-field-trigger-wrap">
<input id="ext-comp-1248" class="x-form-text x-form-field"name="ext-comp-1248"
</div>
<li id="ext-comp-1249" class="list-item ">
<li id="ext-comp-1250" class="list-item ">
<div class="x-form-field-wrap x-form-field-trigger-wrap" id="ext-gen426">
<input id="ext-comp-1250" name="ext-comp-1250" class="x-form-text x-form-field"
</div>
<li id="ext-comp-1251" class="list-item ">
<li id="ext-comp-1252" class="list-item ">
</ul>
好吧,所以...我终于想通了!
这是对我有用的东西:
driver.find_element_by_xpath("//li/div[contains(text(), 'Text labeling input field')]/../following-sibling::li/div/input")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句