将大文本粘贴到 Ruby 中的 Watir Webdriver 文本字段
Pasting large text into a Watir Webdriver textfield in Ruby
我在 Ruby 中尝试使用 Watir Webdriver 操作一个文本字段,格式如下:
<div class="fieldwrapper" ng-hide="tempPageContent.eulaModal.standardEula">
<label class="ng-binding">Custom License Agreement</label>
<textarea ng-model="tempEula.EULAText" class="med ng-pristine ng-valid"></textarea>
<!-- <span text-area-with-counter="tempEula.EULAText"
text-limit="{{ referenceData.appMetaDataReference.maxEulaChars }}"
text-area-class="med"
text-area-required="tempPageContent.eulaModal.customEula"
text-area-itc-field-server-error="versionInfo.eula.errorKeys"
text-area-itc-field-orig-val="orignalVersionInfo.eula.EULAText"
text-area-itc-field-cur-val="tempEula.EULAText"
text-area-itc-empty-errormsg="Enter the license agreement"
text-area-itc-char-exceed-errormsg="The license agreement can not exceed {{ referenceData.appMetaDataReference.maxEulaChars }} characters"></span> -->
</div>
我需要将从文本文件中提取的大字符串插入到此文本字段中,但使用标准 Watir.textarea.set 将不起作用,因为它会在 30 秒后超时。这是我目前正在尝试做的事情:
@browser.execute_script("arguments[0].value = arguments[1]", text_field, eula_text)
将文本注入文本字段,但不启用 'Save' 按钮,它由本机设置方法触发,而不是由 Javascript 触发。
我看到 jarib 的一些 post,他们建议使用 Mac 的 pbcopy 复制文本,然后使用 send_keys([:命令, 'v']),但使用 send_keys 不起作用,尽管文本在 IO 缓冲区中。我尝试了 open 和 popen 方法。我还尝试在 Watir textarea 元素上使用 pbpaste...
我想不出一个新颖的想法来完成我的任务,任何正确方向的指示都将不胜感激。我只是不熟悉 AngularJS 文本字段处理文本输入的方式。
我正在使用最新的 watir-webdriver 0.9.1 和 chromedriver。
3 种可能性:
1) 增加客户端超时时间:
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 180
b = Watir::Browser.new :chrome, http_client: client
2) 不要一次完成所有文本:
File.open('xxx.txt').each do |line|
textfield.append(line)
end
3) 使用您的 javascript 代码复制所有内容,然后使用 textfield.append(' ')
启用保存按钮。
我在 Ruby 中尝试使用 Watir Webdriver 操作一个文本字段,格式如下:
<div class="fieldwrapper" ng-hide="tempPageContent.eulaModal.standardEula">
<label class="ng-binding">Custom License Agreement</label>
<textarea ng-model="tempEula.EULAText" class="med ng-pristine ng-valid"></textarea>
<!-- <span text-area-with-counter="tempEula.EULAText"
text-limit="{{ referenceData.appMetaDataReference.maxEulaChars }}"
text-area-class="med"
text-area-required="tempPageContent.eulaModal.customEula"
text-area-itc-field-server-error="versionInfo.eula.errorKeys"
text-area-itc-field-orig-val="orignalVersionInfo.eula.EULAText"
text-area-itc-field-cur-val="tempEula.EULAText"
text-area-itc-empty-errormsg="Enter the license agreement"
text-area-itc-char-exceed-errormsg="The license agreement can not exceed {{ referenceData.appMetaDataReference.maxEulaChars }} characters"></span> -->
</div>
我需要将从文本文件中提取的大字符串插入到此文本字段中,但使用标准 Watir.textarea.set 将不起作用,因为它会在 30 秒后超时。这是我目前正在尝试做的事情:
@browser.execute_script("arguments[0].value = arguments[1]", text_field, eula_text)
将文本注入文本字段,但不启用 'Save' 按钮,它由本机设置方法触发,而不是由 Javascript 触发。
我看到 jarib 的一些 post,他们建议使用 Mac 的 pbcopy 复制文本,然后使用 send_keys([:命令, 'v']),但使用 send_keys 不起作用,尽管文本在 IO 缓冲区中。我尝试了 open 和 popen 方法。我还尝试在 Watir textarea 元素上使用 pbpaste...
我想不出一个新颖的想法来完成我的任务,任何正确方向的指示都将不胜感激。我只是不熟悉 AngularJS 文本字段处理文本输入的方式。 我正在使用最新的 watir-webdriver 0.9.1 和 chromedriver。
3 种可能性:
1) 增加客户端超时时间:
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 180
b = Watir::Browser.new :chrome, http_client: client
2) 不要一次完成所有文本:
File.open('xxx.txt').each do |line|
textfield.append(line)
end
3) 使用您的 javascript 代码复制所有内容,然后使用 textfield.append(' ')
启用保存按钮。