如何将文本输入到非标准输入元素
How to input text to non standard input elements
我遇到了用于文本输入的 span
元素而不是 input
框,而且我正在努力使用 Watir (Ruby) 输入文本。没有 set
方法,有一个 text
方法 returns 文本很好,但我似乎无法那样设置文本。
我也试过使用 span.select
和 span.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'")
看起来使用这样的程序注入 JavaScript 的能力使您能够做任何 Watir 否则做不到的事情。问得好,这对我来说也是一次学习经历
我遇到了用于文本输入的 span
元素而不是 input
框,而且我正在努力使用 Watir (Ruby) 输入文本。没有 set
方法,有一个 text
方法 returns 文本很好,但我似乎无法那样设置文本。
我也试过使用 span.select
和 span.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'")
看起来使用这样的程序注入 JavaScript 的能力使您能够做任何 Watir 否则做不到的事情。问得好,这对我来说也是一次学习经历