如何在硒定位器中找到“ :: after”元素?

时间:2019-10-05 03:08:49

标签: html css selenium xpath

页面上的复选框很少,默认情况下很少选中。 通过我的代码,我需要处理页面上所有文本框的未选中状态,然后继续。

问题在于,复选框(选中和未选中)具有完全相同的HTML / DOM结构,具有相同的属性/值,但选中复选框时出现的“ :: after”除外。 我该如何编写定位器来找出该元素是选中还是未选中,然后继续取消选中它。

<!-- When checkbox is unchecked -->
<label class="someclasslabel" on-click="[[event]]">
    <span>Male</span>
    <input type="checkbox" data-bind="checked: $properties.value">
    <span class="checkbox"></span>
</label>


<!-- When checkbox is checked -->
<label class="someclasslabel" on-click="[[event]]">
    <span>Male</span>
    <input type="checkbox" data-bind="checked: $properties.value">
    <span class="checkbox">
::after
</span>
</label>

我想要一个定位器,这样我就可以获取属性是否选中或未选中,然后如果已经选中则取消选中。

2 个答案:

答案 0 :(得分:0)

您可以尝试在复选框元素上执行一些Javascript以获取值。

after_value = driver.execute_script
    ("return window.getComputedStyle(document.querySelector('.someclasslabel'),':after')
    .getPropertyValue('content');")

这有点hack,但值得一试。

答案 1 :(得分:0)

在获取所有复选框元素(使用相同的选择器)之后,无论是否选中它们,都可以循环遍历它们,并使用selected方法检查它们是否被选中。 (C#参考Remote https://seleniumhq.github.io/selenium/docs/api/dotnet/,了解RemoteWebElement.Selected属性)。 如果.selected == true-》单击;如果未选中,则什么都不做;