【问题标题】:watir, element not currently visiblewatir,元素当前不可见
【发布时间】:2012-04-21 03:18:54
【问题描述】:

我正在尝试与网页上的小部件进行交互,将数据输入到表单元素中。但是我收到一条错误消息,说元素当前不可见,因此无法与之交互。当手动与页面交互时,文本框会要求您输入一些内容,然后当您单击该框并接受输入时,该文本就会消失。我试过让 watir 先点击这个框,但这对我也不起作用。这是原始的html:

<input class="symbol-search ui-autocomplete-input x-defaulttext-ghost" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">`

在我点击浏览器中的框后会变成这样:

<input class="symbol-search ui-autocomplete-input" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">`

建议?不可能?

【问题讨论】:

  • 向我们展示您在遇到该错误时尝试使用的 watircode。
  • 您可以手动执行此操作吗?我遇到了同样的问题,结果发现该元素并不像我想象的那样可见。

标签: ruby firefox watir watir-webdriver


【解决方案1】:

一个潜在的问题是代码中的输入元素缺少“类型”属性,这是 watir 用来区分诸如 text_field 和复选框之类的属性(因为它们都是输入元素,但行为不同)

没有那个 type 属性(角色并没有真正削减它,它甚至不是输入字段的标准元素,甚至在 html5 中,not as far as I can tell

缺少 type 属性,您将无法使用 watir 支持的大多数标准输入类型,这意味着您将无法访问 .set 方法您可能必须使用基本的“元素”类,然后在单击它后使用 .send_keys 之类的东西来触发击键。

这到底是谁的小部件?他们有一个演示页面来展示它的例子吗?这将使人们更容易发现使用控件的潜在方法。

【讨论】:

    【解决方案2】:

    这对我有用:

    b.text_field(:class => /autocomplete/).set 'hello'
    

    【讨论】:

    • 我在很多测试中都使用了它,我注意到它往往会降低我的测试性能。在一种情况下,我从脚本中删除了三个元素中的三个正则表达式(每个元素一个),并且我将该场景的运行时间缩短了 20 秒。
    • 作为替代方案,您可以使用完整的类名,只要它是一致的。大多数受支持的属性(wiki.openqa.org/display/WTR/HTML+Elements+Supported+by+Watir
    • 我通过使用部分类名结合标签名来处理它。我在这篇 SO 帖子中讨论了我是如何到达那里的:stackoverflow.com/questions/10093114/…
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多