【问题标题】:Karate UI - Find html element via attribute where name contains special charatcers空手道 UI - 通过名称包含特殊字符的属性查找 html 元素
【发布时间】:2020-07-25 21:17:45
【问题描述】:

我是空手道的忠实粉丝,我正在探索空手道 UI 以进行端到端测试,但坚持一个简单的事情,即逐个属性查找元素,其中元素包含特殊字符,如下所示

<input autocapitalize="none" autocomplete="on" autocorrect="off" name="session[username_or_email]" spellcheck="false" type="text" dir="auto" data-focusable="true" class="r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-1inuy60 r-utggzx r-vmopo1 r-1w50u8q r-1lrr6ok r-1dz5y72 r-1ttztb7 r-13qz1uu" value="">

这是从 Twitter 登录页面获取的 html sn-p。为了获得这个控件,我尝试了下面提到的各种选项,但找不到控件

选项 1

  Given driver 'https://twitter.com/login'
  And input('#session[username_or_email]',['aaaa@gmail.com',Key.ENTER], 100)
  And input('#session[password]',['asasas', Key.ENTER], 100)
  When submit().click("click('{span}Log in')")
  #* def elements = locateAll('{div}Click Me')
  Then locate('.css-901oao').exists

选项 2

  Given driver 'https://twitter.com/login'
  And input('input[name=session[username_or_email]]', 'aaaa@gmail.com')
  When submit().click("click('{span}Log in')")
  Then locate('.css-901oao').exists

我在上面尝试了无法找到输入和跨度按钮的选项。任何帮助或指针都会非常有帮助。

【问题讨论】:

    标签: karate


    【解决方案1】:

    请注意如何在需要时使用双引号。我还提供了另一种方法,input[type=text] 也可以:

    * input("input[name='session[username_or_email]']", 'hello')
    * input('input[type=password]', 'world')
    * click('div[role=button]')
    

    【讨论】:

    • 我的下一个问题是如何通过父类或跨度内的文本找到嵌套跨度。我将尝试使用 locateAll,但最好的方法是什么。感谢您的回答
    • @AtulChaudhary 用一个例子提出一个新问题(谢谢!)我可以回答,我们只是添加了一种将locate() 链接到 git 中的元素的方法 - 但也许这个答案会给你一些解决方法:stackoverflow.com/a/60618233/143475
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多