【问题标题】:Using Selenium Webdriver to obtain the active status of an element?使用 Selenium Webdriver 获取元素的活动状态?
【发布时间】:2013-10-21 17:21:05
【问题描述】:

我们有一个正在自动化的新页面,引导模板中的一些功能正在给自动化带来一些复杂性。

传统上,对于复选框或单选按钮,我们使用标签来识别它:

[FindsBy(How = How.CssSelector, Using = "body [autotag='prf_rd_1']")]
        private IWebElement myElement;

此时可以在 Webdriver 代码中使用 element.isSelected 来查看是否勾选。

但是,使用引导程序的开发人员已更改为使用激活或非激活的按钮,例如:

<button class="btn" autotag="prf_bt1" btn-radio="availabilityType.key" ng-model="model.availability.time" type="button"> … </button>

<button class="btn **active**" autotag="prf_bt1" btn-radio="availabilityType.key" ng-model="model.availability.time" type="button"> … </button>

(嗯,不知道如何在代码sn-p中高度活跃这个词,如果有人知道请随时编辑)

所以,现在我们不能查找“isSelected”,因为它不像复选框那样工作。

是否有代码示例用于确定按钮是否在其 css 中具有活动类,而不使用 XPATH?目前我们会像上面那样使用 CssSelector,这样元素可以移动,文本可以改变,但只要自动标记仍然存在,一切都很好。但是,我不清楚如何执行此操作并同时查找其他 CSS(类)以确定它是否处于活动状态。

【问题讨论】:

    标签: c# selenium automation selenium-webdriver


    【解决方案1】:

    如果我的理解正确,您只需要一个 CSS 选择器,它可以定位一个元素,该元素包含特定属性内的特定值,在本例中,它是 class

    这很简单,一个复杂的方法是:

    button[class*='active']
    

    *= 是一个属性通配符,允许您说“A 在该属性值内的某个位置”。

    要专门查找具有classbutton,其中包含active 并且具有设置为auto-tagauto-tag 属性:

    button[class*='active'][auto-tag='prf_bt1']
    

    【讨论】:

    • 我实际上更喜欢button[class~='active'] 稍微宽松一点。但更好 - button.active :D
    • 是的,如果我只是在寻找课程,我可以这样做,但在这种情况下,我正在寻找带有 cssselector 的 autotag 属性,然后想知道它是否有一个活动标签班级也是如此。这是我正在努力解决的“一步到位”。
    • @Arran 啊哈,是的,这就是我一直在寻找的。没有意识到双属性搜索是一种选择。会试一试,谢谢
    • 发现我也可以使用 FindElementsbyCSS(theattribute + active),其中 active 是“.active”。非常感谢。
    【解决方案2】:

    您可以使用这些方法中的任何一种来获取元素的状态,

    getAttribute  
    getCssValue  
    isEnabled
    

    您可以在here 获取有关这些方法的更多详细信息。

    【讨论】:

    • 是的,我过去使用过所有这些方法。但是在这种情况下,我已经在使用 cssselector 来查找具有 autotag 属性的项目,然后想知道获得的元素是否具有活动类。您能否详细说明您将如何使用这些方法来实现这一目标?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2021-07-04
    • 2016-05-02
    • 1970-01-01
    • 2023-01-25
    相关资源
    最近更新 更多