我正在检查是否选中了复选框。我的复选框使用输入和span进行样式化,不使用复选框标记。由于它不是默认的复选框,所以不能使用方法(如、isSelected或isChecked )来检查其状态。然后,我试图检查是否有任何类属于一个状态,而不是另一个。但是,到目前为止,我发现的唯一不同之处是,当元素被选中时,会出现一个::after,但不确定如何检查它?
我发现了一个类似问题的教程,但是我对Javascript不太了解,也不确定如何使它适应我的情况。
https://www.quora.com/How-do-I-locate-After-and-Before-css-tag-in-selenium-webdriver
点击前

点击后

这就是我们正在使用的内容,并按照@pguardiario的答复
System.out.println(js.executeScript("return window.getComputedStyle(document.querySelector('.custom-checkmark'), ':after').getPropertyValue('content')"));但无论选择与否,都会返回相同的输出(空字符串)
更新
找到所选状态和未选择状态之间的差异。未选中复选框时,.custom-checkmark:after样式具有display-none。仍然不确定如何使用这一信息,因为这是我现在拥有的,他们返回无显示之前和之后的复选框被点击。
@Test
public void testingCheckbox() {
JavascriptExecutor js = (JavascriptExecutor) wd;
System.out.println(js.executeScript("return window.getComputedStyle(document.querySelector('.custom-checkmark'), ':after').getPropertyValue('display')"));
lp.clickCheckBox();
System.out.println(js.executeScript("return window.getComputedStyle(document.querySelector('.custom-checkmark'), ':after').getPropertyValue('display')"));
}

新发现
实际上好像有两个复选框。一个带有span标签,另一个带有span。当取消选择某些属性时,它们将一起出现。

谢谢你的帮助。
发布于 2019-08-20 14:54:29
密码起作用了。针对输入标签而不是span解决了这个问题。在第一次尝试时,我的代码出现了错误,所以这就是为什么尽管isSelected字段没有工作,并继续以span标记为目标,这在这里打开了这个线程。很抱歉,谢谢大家的帮助。
发布于 2019-08-19 05:23:20
尝试下面的CSS选择器来识别
span.custom-checkmark:after也请参阅下面的链接以获得更多详细信息Extracting content in :after using XPath。
发布于 2019-08-19 06:09:14
我不能测试它,但它应该是这样的:
driver.executeScript('return window.getComputedStyle(document.querySelector(".custom-checkmark"), ":after").getPropertyValue("content")')遗憾的是,Java没有遗传,这让人很痛苦:
https://stackoverflow.com/questions/57550257
复制相似问题