改变隐藏元素的价值

时间:2013-02-21 17:07:54

标签: html ruby watir

如何使用ruby和watir单击隐藏的复选框和/或更改隐藏元素的值(从“2”到“1”)?

html

 [div class="spec"]
  [span class="listheader"]Rechtsgebieden[/span]
  [div]
   [span class="legalarea" style="cursor:default" onmouseout="hlt(this,false);" onmouseover="hlt(this,true);" ondblclick="call(this, '.legalarea');" onclick="call(this, '.legalarea');"]
   [table id="ctl00_cphMC_SS_eJuris_fltrJurLegalArea_cbt" border="0"] [/table]
  [/div]
 [span class="legalarea-root " style="cursor:default" onmouseout="hlt(this,false);" onmouseover="hlt(this,true);"]
  [div id="ctl00_cphMC_SS_eJuris_fltrJurLegalArea_qwtA105qwausqwt_pu" class="CheckboxValuePopup" style="display:none;position:absolute;" name="ctl00-cphMC-SS-eJuris-fltrJurLegalArea-qwtA105qwausqwt-pu"] [/div]
 [span class="legalarea-root " style="cursor:default" onmouseout="hlt(this,false);" onmouseover="hlt(this,true);"]
  [input id="ctl00_cphMC_SS_eJuris_fltrJurLegalArea_qwtA109qwausqwt_cb_cv" type="hidden" value="2" name="ctl00$cphMC$SS$eJuris$fltrJurLegalArea$qwtA109qwausqwt$cb_cv"]
 [img ondblclick="CheckBox(this, '.ctl00-cphMC-SS-eJuris-fltrJurLegalArea-qwtA109qwausqwt-pu', true);" onclick="CheckBox(this, '.ctl00-cphMC-SS-eJuris-fltrJurLegalArea-qwtA109qwausqwt-pu', true);" src="http://portal.rechtsorde.nl/img/2.png"]
 [a class="search-filter-link" onclick="$('.ctl00-cphMC-SS-eJuris-fltrJurLegalArea-qwtA109qwausqwt-pu').dialog('open'); callerID=this;"]Handels- en ondernemingsrecht[/a]

用于访问元素的代码/找到值:

browser.hidden(:name, /A111/)first.value 

2 个答案:

答案 0 :(得分:3)

Watir不允许您更改隐藏元素的值。 Watir正在尝试模拟实际用户。由于用户无法更改隐藏元素,因此Watir也无法更改。相反,您应该尝试与调用函数的元素进行交互以更改隐藏元素。

提供的html看起来有点尴尬(请参阅问题评论),但我的猜测是,当点击看起来像空白复选框字段的img时,隐藏值会发生变化。

您可以尝试点击隐藏字段的兄弟图片:

browser.hidden(:name, /A111/).first.parent.img.click

鉴于隐藏字段的名称似乎是动态生成的,您可能还想尝试以下(我认为这些部分基于不太可能更改的部分):

#Assuming that the link text beside the checkbox is unique
browser.link(:text => 'Handels- en ondernemingsrecht').parent.img.click

#Assuming that there is only one hidden element with 'fltrJurLegalArea' in the name:
browser.hidden(:name, /fltrJurLegalArea/).first.parent.img.click

答案 1 :(得分:3)

您可以使用JS来更改值

browser.execute_script('document.getElementById(“ctl00_cphMC_SS_eJuris_fltrJurLegalArea_qwtA109qwausqwt_cb_cv”)。value =“1”')