【问题标题】:Ruby - Selenium Webdriver , AngularJS Radiobutton Unable to detect AttributeRuby - Selenium Webdriver,AngularJS Radiobutton无法检测到属性
【发布时间】:2016-05-31 08:38:35
【问题描述】:

我无法检测到单选按钮上的“选中”属性。

我有两个这样的单选按钮: Radio Buttons

这些是元素属性:

<input type="radio" ng-change="logConsent(true)" ng-model="xxxConsent" value="true" id="xx_Summary_Radio_Consent_Yes" name="consent" class="ng-valid ng-dirty">

<input type="radio" ng-change="logConsent(false)" ng-model="x2Consent" value="false" id="x2_Summary_Radio_Consent_No" name="consent" class="ng-valid ng-dirty">

使用 Selenium webdriver,element.attribute('checked') 始终返回 nil。我不明白如何检查它是否已选中/启用。我尝试扫描 Chrome 检查中的更改:属性在检查单选按钮之前和之后都没有改变。有人可以帮我验证一下吗?

也对版主/用户:我无法关联其他“单选按钮”问题和我在 StackOverflow 中的答案,尽管我可以看到很多这样的问题。这就是为什么我提出了一个单独的问题。

【问题讨论】:

  • 更新 :: 元素将类从 - ng-valid ng-valid-required :: 更改为 ng-valid ng-valid-required ng-dirty。但我注意到,一旦我们尝试同时单击“是”和“否”,两者都会更改状态但不会刷新回原始状态。这与检查的财产有什么关系? [最后他们都是 ng-dirty]

标签: javascript ruby angularjs selenium-webdriver


【解决方案1】:

您好,我可以看到 HTML 具有值属性。

它们应该类似于使用事件指令来记录此类点击次数并读取属性值 true 和 false 并生成您正在谈论的历史记录。

我相信你可以试试这个——为 ng-dirty 设置一个事件监听器?或任何触发。请与开发人员联系,他们应该能够提供帮助。根据触发的事件,您可以检测到点击效果很好 - 至少根据您所描述的。在这里,如果您能够读取值 true false ,那么您正在检测一个事件和一个 HTML 节点属性值 - 这可以确认点击。虽然您没有完全验证选中的属性。

【讨论】:

    【解决方案2】:

    根据提供的 HTML 代码,没有选中的属性,但您正在尝试检索它。这就是它给你空值的原因。我希望根据 HTML 提供的“值”属性,其中一个为 True,另一个为 False。所以我期待选中的单选按钮有 value = "True" 所以尝试 value 属性。

    在Java中我们可以尝试如下

        myWebElement.getAttribute("value");  //this retrieve true or false
    
        // or we  can try like below also
    
        if(myWebElement.isEnabled() ==true){
    
            //my elemented is in selected state
    
        }
    

    谢谢, 壁画

    【讨论】:

    • 您好 Murali,我知道并用同样的方法进行了测试 - 实际上是第一件事。第一个始终为真,第二个为假。 [总是,不管有多少行动]。附加信息 - 您看到右侧的窗口弹出按钮 - 在弹出窗口打开时提供点击是和否的累积历史记录。本质上,它以某种方式存储了点击的所有动作和时间。
    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2020-02-06
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多