用于设置没有id和奇数参数的text_field的Ruby Watir语法
Ruby Watir syntax for setting a text_field with no id and odd parameters
我试图在一个不再有id的网页上设置text_field和文本区域。我猜这个网站是在试图避免自动化。input和textarea标签位于表单内部。下面是输入和文本区域标签,以及它们所包含的内容。
<input class="uniform-input ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength" type="text" data-invalid-chars="" data-max-length="50" required="" placeholder="Subject" data-float-label="true" data-ng-model="message.Subject"></input>
<textarea class="uniform-input ng-pristine ng-invalid ng-invalid-required ng-valid-maxlength" data-invalid-chars="" data-max-length="4000" required="" placeholder="Enter your message here" data-ng-keypress="view.error = false" data-float-label="true" data-ng-model="message.Body"></textarea>
还有一个按钮,我需要在提交文本后点击这个按钮标签:
<button data-ng-if="!paymentInfo" type="button" class="button button-grey ng-scope" data-ng-click="ctrl.sendMessage()" data-ng-disabled="view.waiting" data-ng-class="{ 'button-disabled': view.waiting }">Send Now</button>
当它没有名称时如何单击它?
任何帮助,如何设置这个与Watir将非常感激。如果Watir无法做到这一点,是否有一个可能的JS解决方案,我可以使用?如果需要进一步的信息,请告诉我。
Using ruby gem watir
require 'watir-webdriver'
$browser = Watir::Browser.new
$browser.goto "yourwebsite.com"
$x = 0
def test
print "#{$x}"
begin
$browser.text_fields[$x].set "#{$x}"
rescue StandardError => e
puts " no text field found, try again.'n'n"
end
$x += 1
end
不断更改X的值,以查看您正在操作的文本字段。我想你可以做一个循环,但你可能会得到一个错误。一直调用test直到找到你想要的。
这些元素看起来确实有一些描述性的属性。文本字段有一个描述该字段的data-ng-model
。此外,按钮的文本可能是唯一的。
因此,我会这样做:
browser.text_field(:data_ng_model => 'message.Subject').set('subject text')
browser.textarea(:data_ng_model => 'message.Body').set('body text')
browser.button(:text => 'Send Now').click
我认为这种方法更能表达你的代码在做什么。此外,它可以更健壮,因为它不受字段重新排序或添加/删除其他字段的影响。
我一直在通过xpath识别这些ng-data对象,主要是在没有更具体的方法来识别它们的情况下。犹斯丁关于稳健的方法是正确的;找到一种不需要重构的方法。下面是我要写的:
browser.text_field(xpath: '//input[@data-ng-model="message.Subject"]').set("Hello")
browser.button(:text => 'Send Now').click
我不喜欢使用太多xpath,除非它能保证我以唯一的方式在页面上查找对象。
相关文章:
- 如何将输入(type=text)从html表单传递到javascript函数
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 在文本区域中使用jQuery.text()保持换行符
- 用Javascript添加带有#text的tr元素
- 当用户按下回车键时,自动在text区域/text中插入消息
- 修正案'text'的元素
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- 我如何在INPUT TEXT中使用这个Javascript和jQuery
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- 从所有下拉菜单中选择val和text
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- .val()返回未定义的.text返回随机代码
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- type=text/javascript和language=javascript之间的区别
- 如何使用tspan拆分Ext.draw.text中的长文本
- text()显示双文本
- getDocument by id/get input text from button dons'不起作用
- Animation cuts off multiple lines of text in <p>
- Javascript em根据窗口/视口尺寸调整大小,不影响文档样式的text/css