将大文本粘贴到 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(' ') 启用保存按钮。