watir - 如何将文本输入到非标准输入元素

标签 watir

我面临着 span文本输入元素,而不是 input框,我正在努力使用 Watir (Ruby) 输入文本。没有set方法,有一个text可以很好地返回文本的方法,但我似乎无法以这种方式设置文本。
我也试过使用 span.selectspan.focus然后 browser.send_keys但该字段中没有输入任何内容。

<div class="UFIAddCommentInput _1osb _5yk1">
  <div class="_5yk2" tabindex="-2">
    <div class="_5rp7">
      <div class="_1p1t">
        <div class="_1p1v">
          Write a reply...
        </div>
      </div>
      <div class="_5rpb">
        <div aria-autocomplete="list" aria-expanded="false" aria-haspopup="false" aria-owns="js_3i" class="_5rpu" contenteditable="true" data-testid="ufi_reply_composer" role="combobox" spellcheck="true" title="Write a reply..." id="js_3j">
          <div data-contents="true">
            <div data-block="true" data-offset-key="8c176-0-0" class="_45m_ _2vxa">
              <span data-offset-key="8c176-0-0">
                <br data-text="true">
                </br>
              </span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
接下来我可以尝试什么?有没有办法阻止前端设计师使用非标准元素?

最佳答案

您可以使用 javascript 来执行此操作。对我来说,困难在于处理嵌套引号。

在能够对嵌套字符串执行此操作之前,我必须先弄清楚两点知识:

a.) 关于 javascript 如何处理嵌套引号:http://www.w3schools.com/js/js_strings.asp

b.) 关于如何处理 ruby​​ 中的嵌套引号:Escaping single and double qoutes from a string in ruby (%Q 操作符可以让你设置任何你想开始和结束字符串的东西)

css_selector = "span[data-offset-key='8c176-0-0']"
b.execute_script(%Q|query="#{css_selector}"|)
b.execute_script("document.querySelector(query).innerHTML='that was tricky'")

看起来使用诸如此类的过程注入(inject) JavaScript 的能力使您能够做 Watir 不能做的任何事情。好问题,这对我来说也是一次学习经历

关于watir - 如何将文本输入到非标准输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180238/

相关文章:

JQuery + Watir - 事件处理程序不起作用

ruby - Selenium WebDriver 将 Firefox 路径更改为 Tor

Ruby 正则表达式和字符串变量

ruby - 如何使用 watir 和 IE 上传文件?

ruby - Webdriver Watir Ruby Chrome 版本

ruby - 使 headless 浏览器停止加载页面

ruby - 如何在 ruby​​ watir 中使用 xpath 获取 <legend> 标签的文本值。(使用 IE)

ruby - 如何在 Watir 中使用类名计算表行数?

ruby - 如何实现 Watir 类(例如 PageContainer)?

ruby - 是否可以使用 watir 选择或突出显示文本框中的文本子字符串?