You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌翻译页面中Watir代码无法打印文本框内容问题求助

解决Watir设置textarea后无法获取对应div文本的问题

可能的原因及解决步骤:

  1. 页面渲染延迟
    设置文本后,页面的div元素可能需要短暂时间同步更新内容,直接获取会拿到空值。可以通过Watir的等待机制确保元素加载完成:
# 设置文本到textarea
b.textarea.set text

# 等待目标div出现且文本非空
Watir::Wait.until(timeout: 10) do
  target_div = b.div(xpath: '//textarea/following-sibling::div[2]/div')
  target_div.present? && !target_div.text.strip.empty?
end

# 打印文本
puts b.div(xpath: '//textarea/following-sibling::div[2]/div').text
  1. XPath定位不准确
    有时候页面结构可能和你预期的不一样,比如兄弟节点的计数错误。可以先遍历textarea的所有后续div节点,确认目标位置:
# 输出所有textarea的后续div文本及索引
b.textarea.following_siblings(:div).each_with_index do |div, idx|
  puts "第#{idx+1}个div: #{div.text.strip}"
end

根据输出结果调整XPath中的[2]为正确的索引。

  1. 元素位于iframe内
    如果目标div在iframe中,需要先切换到对应iframe再定位:
# 切换到iframe(替换为实际iframe的id/name/定位器)
b.frame(id: 'editor_iframe').use do
  # 在iframe内执行定位和操作
  b.textarea.set text
  Watir::Wait.until { b.div(xpath: '//textarea/following-sibling::div[2]/div').text.present? }
  puts b.div(xpath: '//textarea/following-sibling::div[2]/div').text
end
  1. 富文本编辑器的特殊处理
    如果页面用了Quill、TinyMCE这类富文本编辑器,它们通常会用隐藏的textarea存储数据,实际显示用div。这种情况下,直接操作div可能更可靠:
# 定位到编辑器的显示div,直接输入文本(如果支持)
b.div(class: 'ql-editor').send_keys(text)
# 或者设置innerHTML
b.div(class: 'ql-editor').execute_script("this.innerHTML='#{text}'")
# 然后直接获取div文本
puts b.div(class: 'ql-editor').text

内容的提问来源于stack exchange,提问作者Rajagopalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:06