什么是正确的XPath语法来检查当前是否选择了一个option元素,或者只是为了从一个元素中获取所选元素,在用户和JavaScript可能已经与之交互的打开页面上?这甚至可以用于XPath,还是缺乏查看DOM属性的能力?optionselect
我找不到任何关于此的文档,并且(推测性地)尝试过:
//option[@selected=true]//option[@selected="selected"]//option[@selected]但这些都不起作用; 他们根本不匹配任何元素.
(如果重要的话,我已经尝试过使用$xChrome开发者控制台中的功能,并使用find_elements_by_xpathSelenium for Python中的方法.)
Mar*_*ery 17
简短的回答:这是不可能的.
更长的答案:XPath可以查看HTML属性,但它不能查看DOM属性.选择<option>一个元素<select>改变了selected 性质的<option>到true,而且也改变了value其父的财产<select>元素,但它不会影响任何属性,所以它是不可见的XPath的.
要查找<option>具有selected属性集的元素(通常是页面作者可能如何确定最初选择哪个选项),您可以使用//option[@selected].但是这没有找到当前选中的<option>; 用户对选择所做的更改对XPath是不可见的.不能保证它甚至会找到最初选择的选项,因为页面作者可能没有将selected属性放在任何元素上,并且让浏览器默认选择第一个选项或让一些JavaScript通过selected 属性选择初始选项.
多其他 的答案 在这里 声称,像一个选择器//option[@selected]可以检测到页面加载后由用户做出选择的变化仅仅是完全错误的.
当然,如果你能够使用CSS选择器而不是XPath选择器,那么option:checked就可以完成这项工作.
问题可能是"(双引号)。
//select/option[@selected='selected'] - 将匹配所选选项,我正在成功使用它。
//select/option[@selected='selected' and @value='specific value'] - 只会匹配具有“特定值”的选定选项,我也在使用它。
如果您仍然遇到问题,则可能是完全不同的问题,也许没有选项节点。我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
14332 次 |
| 最近记录: |