动态ID文本框的Selenium脚本

时间:2014-08-26 05:29:18

标签: ruby selenium

我必须点击其ID可更改的元素,表示每次都将动态值分配给文本框。我必须在文本框中插入值。 以下是文本框的检查元素代码

    <div class="invoicing-details">
        <div>
        <label for="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca"> To </label>
        <input id="PaidToContactID" type="hidden" value="" name="PaidToContactID">
        <div class="controls">
        <input id="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca" type="hidden" style="display:none;" value="" name="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca">
        <input id="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca_value" class=" autocompleter field " type="text" style="width:127px;" tabindex="10" value="" maxlength="255" name="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca_value" autocomplete="off">
        <div id="PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca_suggestions" class="autocomplete" style="display: none; height: 200px; width: 200px;"> </div>

<script type="text/javascript">
</div>
</div>

&#34; PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca_value&#34;这是文本框ID。 我使用以下代码  self.set_text_value(&#39; div.invoicing-details输入&#39;,&#34;我的值&#34;,true) 但它不起作用并且语法错误。 任何人都可以帮助我并提供语法如何为seleinum编写ruby脚本。

2 个答案:

答案 0 :(得分:0)

动态ids对自动化非常不利。您可以尝试将其他属性添加到具有稳定名称的input元素。我清楚地了解你需要点击元素,然后在其中输入文字?!我不擅长红宝石,但我觉得这应该是这样的:

element = driver.find_elements(:css,".invoicing-details .autocompleter")
element.click
element.send_keys "Some text"

答案 1 :(得分:0)

您可以尝试使用下一个xpath找到元素的id://input[@id=(//label[contains(text(),'To')]/@for)]。在这里,您可以通过文本找到标签,然后获取for属性(需要ID)。

element = driver.find_elements(:xpath,"//input[@id=(//label[contains(text(),'To')]/@for)]")
element.click
element.send_keys "Some text"