动态ID文本框的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>

"PaidToName_b62b89226e5f4fcbb74d0d27a9db88ca_value"这是文本框id。我使用了以下代码self.set_text_value('div.invoicing-details input',"我的值",true)但是它不起作用,并且出现语法错误。有人能帮助我并提供如何为seleinum编写ruby脚本的语法吗。

动态id对自动化非常不利。您可以尝试将其他属性添加到具有稳定名称的输入元素中。正如我清楚地理解的,你需要点击元素,然后在其中输入文本?!我不擅长ruby,但我认为这应该看起来像:

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

您可以尝试使用下一个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"

最新更新