Ruby 尝试使用id区分两个隐藏值
从我对ruby+watir的大杂烩式学习中又得到了一个问题 我为之编写自动化的CMS创建一个项目并为其分配一个id,此时我执行下面的代码来收集和存储id,因为这用于针对该项目的其他操作Ruby 尝试使用id区分两个隐藏值,ruby,automation,watir,Ruby,Automation,Watir,从我对ruby+watir的大杂烩式学习中又得到了一个问题 我为之编写自动化的CMS创建一个项目并为其分配一个id,此时我执行下面的代码来收集和存储id,因为这用于针对该项目的其他操作 @@grabprodvarelement = $browser.hidden(:name, "shopProductVariantHeadingID") @@prodvarid = @@grabprodvarelement.value 创建后,有两个按钮控制项目是否有库存、是否已发布或未发布 通常我用来更新发布
@@grabprodvarelement = $browser.hidden(:name, "shopProductVariantHeadingID")
@@prodvarid = @@grabprodvarelement.value
创建后,有两个按钮控制项目是否有库存、是否已发布或未发布
通常我用来更新发布状态的代码是
form_element = $browser.hidden(:name => 'shopProductVariantHeadingID', :value => "#{@@prodvarid}").parent
form_element.button(:value => 'Change').click
然而,在这个例子中,当针对下面的html运行时,它正在更新股票标志,而不是发布状态(我假设这是因为它是这个“更改”值的第一个实例)
我认为这足以确定要单击的正确条目,但是,我得到了错误
Watir::Exception::UnknownObjectException: unable to locate element, using (:name=>"publish", :tag_name=>"button")
任何帮助都将不胜感激。问题实际上在于
表单元素的定位方式,而不是按钮的单击方式
该行:
form_element = $browser.hidden(:name => 'shopProductVariantHeadingID', :value => "#{@@prodvarid}").parent
将始终返回缺货表格;从未公开过。这是因为Watir将找到第一个匹配的隐藏元素,即缺货表单中的元素。这会导致表单元素.button(:value=>'Change')
单击第一个更改按钮,而表单元素.button(:name=>'publish')
不存在
表单元素需要根据ShopProductVarianteAdingID以及published按钮进行定位:
form_element = $browser.forms.find do |form|
form.hidden(:name => 'shopProductVariantHeadingID', :value => "#{@@prodvarid}").exists? &&
form.button(:name => 'publish').exists?
end
form_element.button(:value => 'Change').click
尝试form\u element.element(:name,'publish')。单击是否可以检查此按钮是否存在?另请检查是否存在$browser.hidden(:name=>'shopProductVariateAdingId',:value=>“#{@prodvarid}”)
你好,Alex,是的。如果我使用If语句来表示exists?它确认元素的存在以及按钮
form_element = $browser.hidden(:name => 'shopProductVariantHeadingID', :value => "#{@@prodvarid}").parent
form_element = $browser.forms.find do |form|
form.hidden(:name => 'shopProductVariantHeadingID', :value => "#{@@prodvarid}").exists? &&
form.button(:name => 'publish').exists?
end
form_element.button(:value => 'Change').click