如何确定是否使用Selenium和Java选择了使用pseudo-element::after样式的单选按钮选项

如何确定是否使用Selenium和Java选择了使用pseudo-element::after样式的单选按钮选项,java,selenium,selenium-webdriver,xpath,pseudo-element,radiobutton,Java,Selenium,Selenium Webdriver,Xpath,Pseudo Element,Radiobutton,我很难确定是否选择了单选选项No或是否使用Selenium Java。以下是网页上的广播选项截图 这是原始的HTML代码。因为它缺少伪元素,所以我也附上了它的截图 对 不 下面是HTML代码的屏幕截图,该代码在未选择任何选项时动态加载pseudo element::after(下面突出显示) 我在下面创建了一个Java方法,该方法执行JavaScript,我希望为标记返回整个标签。它当前正在打印出null。但是,当我在Chrome浏览器控制台中执行下面使用的脚本时,它会标识整个标签标记,

我很难确定是否选择了单选选项No或是否使用Selenium Java。以下是网页上的广播选项截图

这是原始的HTML代码。因为它缺少伪元素,所以我也附上了它的截图


对
不
下面是HTML代码的屏幕截图,该代码在未选择任何选项时动态加载pseudo element::after(下面突出显示)

我在下面创建了一个Java方法,该方法执行JavaScript,我希望为标记返回整个
标签。它当前正在打印出
null
。但是,当我在Chrome浏览器控制台中执行下面使用的脚本时,它会标识整个标签标记,包括
之前和
::之后的
伪元素

选择了Radioption()的公共字符串{
字符串标签=”;
List radioOptions=findElementsByXpath(“../div[@id='ButtonOptions']/label”);
//迭代两个单选选项并执行JavaScript。
对于(int i=1;i要验证是否选择了文本为No的选项,您可以使用以下基于:

  • 使用前面的:

  • 使用前面的兄弟姐妹:


参考文献 有关伪元素的详细讨论,请参见:


请阅读为什么A。考虑用格式化的基于文本的相关HTML、代码试验和错误堆栈跟踪更新问题。Hello @ DEBANJANB-我在描述中添加了原始HTML代码。我仍然希望保留HTML代码的截图,因为它具有伪元素::不复制它们,正如您在原始HTML代码中看到的那样。您确定需要伪元素吗?您不能只选择输入元素并检查“checked”属性吗?Hi@jameslafferty-checked属性的问题是,它只适用于No单选选项。当我单击Yes单选选项时,“checked”属性不可用填充在
input
标记中。因此它不可靠。Doh!我忘记了…在更改时,您需要的是checked属性,而不是checked属性。但是…Selenium还提供了一个isSelected方法,您可以使用它来检查输入是否被选中。这是一个非常有趣且信息丰富的答案(因此是向上投票)。不过,我确实想知道OP是否应该使用不同的方法来确定单选按钮是否被选中。这样做对我来说似乎很可疑(尽管在某些情况下,可能只有这样做才是唯一的选择).我遗漏了什么吗?或者你觉得这也对吗?@jameslafferty很棒,实际上有一个方法
isSelected()
正如您在评论中提到的,这不是很有效/可靠。但是我正在等待OP带着观察结果回来。他的要求可能会通过这个逻辑确定下来。您好@DebanjanB-谢谢。我确实考虑了您在上面提出的解决方案。问题是,验证是否选择了“是”选项是有问题的ng困难。
选中的
属性没有为其填充,因此无法在xpath中使用。选择“是”时发生的唯一变化是:
::在
标记的标签中添加了
伪元素之后。我确实理解我最初的问题是关于“否”选项。@skota pseudo element ar仅e样式属性,对元素标识的影响最小。如果您对“是”选项有问题,请随时提出新的问题和新的要求。我也很乐意回答。@DebanjanB-是。我用前面的
尝试了您的解决方案,但没有任何选项。我可以为您单独发布一个问题是的,选择。
try {
    driver.findElement(By.xpath("//div[@id='ButtonOptions']//label[@class='vdl-radio']//label[text()='No']//preceding::input[@checked]"));
    System.out.println("No option is selected");
}
catch(NoSuchElementException e) {
    System.out.println("No option isn't selected");
}
try {
    driver.findElement(By.xpath("//div[@id='ButtonOptions']//label[@class='vdl-radio']//label[text()='No']//preceding-sibling::input[@checked]"));
    System.out.println("No option is selected");
}
catch(NoSuchElementException e) {
    System.out.println("No option isn't selected");
}