Javascript 硒(爪哇)和#x2B;角度7:检查MatRadioButton是否已选中

Javascript 硒(爪哇)和#x2B;角度7:检查MatRadioButton是否已选中,javascript,java,angular,selenium,Javascript,Java,Angular,Selenium,假设以下(简化)代码: 有棱角的 但我无法验证是否选中了单选按钮: assertTrue(btn.isSelected()); // <--- not working 但这是一种硬编码——必须有另一种方法 问题: 如何通过Selenium检查单选按钮是否选中?我想您首先要使用以下行访问webdriver实例中的元素: private By btn = By.id("xyz"); WebElement radioButton = driver.findEleme

假设以下(简化)代码:

有棱角的 但我无法验证是否选中了单选按钮:

    assertTrue(btn.isSelected()); // <--- not working
但这是一种硬编码——必须有另一种方法

问题:
如何通过
Selenium
检查单选按钮是否选中?

我想您首先要使用以下行访问webdriver实例中的元素:

private By btn = By.id("xyz");
WebElement radioButton = driver.findElement(btn);
执行上述操作将确保下面的断言有效

assertTrue(radioButton.isSelected()); // <--- not working

assertTrue(radioButton.isSelected());// 只是一些关于王子正确答案的细节

isSelected()
WebElement
的方法,而
By
class没有此方法。这就是为什么
assertTrue(btn.isSelected())不工作

WebElement
接口表示html页面中的节点(元素),而
By
是一个用于定位和分配元素的帮助器类。例如,
findElement​(By By)
By
作为参数,它将返回
WebElement
的实例

链接:


但是我知道单选按钮已经被选中,因为我在做断言之前拍了一张快照。为什么我需要再次单击它?所以您不需要编写那行代码,只需执行它,而不必执行它,这应该可以让我明白:使用您的解决方案,我会主动单击单选按钮,对吗?但是我不想操纵单选按钮的状态-我只想知道我一进入视图它是否已经被选中。我明白你的意思,我是说只要从代码中删除那一行,它就会工作。我只是给你那一行作为参考,以防没有点击。
assertEquals("... mat-radio-button mat-accent mat-radio-checked", btn.getAttribute("class"));
private By btn = By.id("xyz");
WebElement radioButton = driver.findElement(btn);
assertTrue(radioButton.isSelected()); // <--- not working