我必须点击其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脚本。
答案 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"