我正在尝试找到在整个页面上分配了相同类的元素。 我尝试使用
browser.find_element(css:first-child,".formProperty.fpMandatory.fpUpdateable .off .collapsedView.Uncompleted .fpColValue .textFieldValueSelector.valueSelector .integer").send_keys"1000"
但是,它无法说明语法错误SyntaxError:(irb):87:语法错误,意外')',expecting =>
页面上有6个元素分配了相同的类,我需要选择它们并将值发送到它们中。
<div class="body">
<div class="content">
<div class="view">
<div class="formPropertyBoxDefs">
<div id="tile379" class="formProperty fpCompleted fpMandatory " ktype="formProperty">
<div id="tile381" class="formProperty fpMandatory fpUpdateable " ktype="formProperty">
<div id="tile381_selector" class="on" fbtype="selector">
<div id="collapsedtile381" class="collapsedView Uncompleted" style="display:block; cursor:default;">
<div id="tile381_collapsed_statusFlyer" class="fpColStatus">
<div class="fpColTitle">
<div class="fpColValue">
<!-- CssName applied only on expanded mode -->
<div id="tile382" class="textFieldValueSelector valueSelector">
<div onmousedown="valueSelectorOnEnter('tile381', $('tile382_input'), 'focus')">
<input id="tile382_input" class="integer" type="text" onchange="setValueSelectorDirty('cpe111');" selector="selector" value=""/>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="tile383" class="formProperty fpMandatory fpUpdateable " ktype="formProperty">
<div id="tile385" class="formProperty fpCompleted fpMandatory " ktype="formProperty">
我试图通过类选择器选择上面的元素。 我在IRB中运行它,因为我们可以在上面的代码块中看到,它不需要等待而不是iframe。
任何帮助将不胜感激。
谢谢!
Abhishekl
答案 0 :(得分:2)
:first-child
应该是选择器的一部分:
browser.find_element(:css,".formProperty.fpMandatory.fpUpdateable .off .collapsedView.Uncompleted .fpColValue .textFieldValueSelector.valueSelector .integer:first-child").send_keys"1000"
要选择每个元素,您可以使用:nth-child(n)
,其中n
是您要与之互动的项目的计数:
browser.find_element(:css,".formProperty.fpMandatory.fpUpdateable .off .collapsedView.Uncompleted .fpColValue .textFieldValueSelector.valueSelector .integer:nth-child(1)").send_keys"1000"
browser.find_element(:css,".formProperty.fpMandatory.fpUpdateable .off .collapsedView.Uncompleted .fpColValue .textFieldValueSelector.valueSelector .integer:nth-child(2)").send_keys"200"
注意::nth-child(n)
不适用于IE 7或IE 8。
希望最后一次编辑:
我认为你需要在这种情况下使用find_elements()
。
elements = browser.find_elements(:css,".formProperty.fpMandatory.fpUpdateable .off .collapsedView.Uncompleted .fpColValue .textFieldValueSelector.valueSelector .integer")
elements[0].send_keys"1000"
elements[1].send_keys"200"
编辑以解释:nth-child(n)
在这种情况下的失败:
因此,您编辑的原始HTML如下所示:
<div id="tile381" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile383" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile385" class="formProperty fpCompleted fpMandatory " ktype="formProperty"></div>
<div id="tile387" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile389" class="formProperty fpMandatory " ktype="formProperty"></div>
<div id="tile391" class="formProperty fpCompleted fpMandatory " ktype="formProperty"></div>
<div id="tile393" class="formProperty fpCompleted fpMandatory " ktype="formProperty"></div>
<div id="tile395" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile397" class="formProperty fpMandatory " ktype="formProperty"></div>
<div id="tile399" class="formProperty fpMandatory " ktype="formProperty"></div>
当我测试:nth-child(2)
时,它处理了这个特定的HTML。当我尝试nth-child(3)
时,它无效。
如果您的HTML看起来像这样:
<div id="tile381" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile383" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile387" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
<div id="tile395" class="formProperty fpMandatory fpUpdateable " ktype="formProperty"></div>
然后:nth-child(n)
适用于它应匹配的所有四种情况。
鉴于HTML的结构,find_elements
是正确的方法。