嗨,我正在使用 Watir 编写自动化测试脚本。我试图将字符串附加到文本字段中的现有字符串。我能够弄清楚如何使用这行代码附加到文本字段的末尾:
browser.text_field(:id => "custom-preview-text").append "Hello World"
如何更改此行,以便在文本字段内的特定字符串之后附加此文本?
嗨,我正在使用 Watir 编写自动化测试脚本。我试图将字符串附加到文本字段中的现有字符串。我能够弄清楚如何使用这行代码附加到文本字段的末尾:
browser.text_field(:id => "custom-preview-text").append "Hello World"
如何更改此行,以便在文本字段内的特定字符串之后附加此文本?
这是实现这一目标的一种方法:
require 'watir-webdriver'
b = Watir::Browser.new
b.goto 'https://www.google.co.in/search?output=search&sclient=psy-ab&q=gdg&btnK='
elem = b.text_field(:id => "gbqfq")
val = elem.value
elem.clear
elem.send_keys val + "Good bye!"
puts elem.value
# >> gdgGood bye!
如果要在特定字符串之后插入文本,我认为您必须获取文本字段的字符串,使用 Ruby 确定新字符串,然后使用新字符串输入文本字段。
您可以使用gsub
在字符串的某个部分之前或之后插入文本。例如:
original_text = 'word1 word2 word3'
# Insert text before word2
p original_text.sub(/(?=word2)/, 'insertion ')
#=> "word1 insertion word2 word3"
# Insert text after word2
p original_text.sub(/(?<=word2)/, ' insertion')
#=> "word1 word2 insertion word3"
在文本字段中插入新字符串如下所示:
# Get the current text field value
text_field = browser.text_field
original_text = text_field.text
# If you want to insert before word 2
new_text = original_text.sub(/(?=word2)/, 'insertion ')
# If you want to insert after word 2
new_text = original_text.sub(/(?<=word2)/, ' insertion')
# Set the text field with the new value
text_field.set(new_text)
请注意,此解决方案假定您不介意重新输入现有文本(即没有 javascript 会触发并弄乱您的测试)。