【问题标题】:How I can access elements via a non-standard html property?如何通过非标准 html 属性访问元素?
【发布时间】:2014-12-16 00:24:42
【问题描述】:

我正在尝试使用 watir-webdriver 实现测试自动化。顺便说一句,我是 watir-webdriver、ruby 和 co 的大一新生。

我们所有的 HTML 实体都有一个独特的 HTML 属性,名为“wicketpath”。可以使用“name”、“id”等方式访问元素,但不能使用属性“wicketpath”。所以我用 XPATH 进行了尝试,但没有成功。

任何人都可以用coden-p帮助我如何通过属性“wicketpath”访问元素吗?

提前致谢。

R.

【问题讨论】:

    标签: watir watir-webdriver


    【解决方案1】:

    您应该能够使用 xpath。

    例如,考虑下面的 HTML

    <ul class="ui-autocomplete" role="listbox">
        <li class="ui-menu-item" role="menuitem" wicketpath="false">Value 1</li>
        <li class="ui-menu-item" role="menuitem" wicketpath="false">Value 2</li>
        <li class="ui-menu-item" role="menuitem" wicketpath="true">Value 3</li>
    </ul>
    

    以下 xpath 将给出 wicketpath = true 的 li 的文本:

    puts browser.li(:xpath, "//li[@wicketpath='true']").text
    #=>Value 3
    

    更新 - 替代解决方案 - 添加到定位器:

    如果您使用大量 wicketpath,您可以将其添加到定位器中。

    在你需要 watir-webdriver 之后,添加这个:

    # This allows using :wicketpath in locators
    Watir::HTMLElement.attributes << :wicketpath
    
    # This allows accessing the wicketpath attribute
    class Watir::Element
      attribute(String, :wicketpath, 'wicketpath')
    end
    

    这将让您使用 'wicketpath' 作为定位器:

    p browser.li(:wicketpath, 'true').text
    #=> "Value 3"
    
    p browser.li(:text, 'Value 3').wicketpath
    #=> true
    

    【讨论】:

      【解决方案2】:

      试试这个

      puts browser.li(:css, ".ui-autocomplete > .ui-menu-item[wicketpath='true']").text

      请让我知道上述脚本是否有效。

      【讨论】:

        猜你喜欢
        • 2019-10-10
        • 2011-01-16
        • 1970-01-01
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 2014-07-01
        相关资源
        最近更新 更多