我面对文本输入的span
元素而不是input
框,我正在努力使用Watir(Ruby)来输入文本。没有set
方法,有text
方法可以正常返回文字,但我似乎无法以这种方式设置文字。
我还尝试使用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>
如果有人能提供一些帮助或见解,我可以尝试下一步,我将非常感激。如果有人知道如何阻止前端设计师使用非标准元素,我也想知道这一点!
答案 0 :(得分:1)
您可以使用javascript执行此操作。我遇到的困难是处理嵌套的引号。
在能够做到这一点之前我必须首先弄清楚两个知识w /关于嵌套字符串:
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不能做的事情。好问题,这对我来说也是一次学习经历