Selenium按名称找不到元素

时间:2018-02-07 02:38:19

标签: selenium extjs

我正在尝试自动化ExtJs应用程序。当页面上有新的代码更改时,字段ID会更改。当我试图通过NAME找到它时,selenium找不到它,但通过使用ID它可以工作。由于ID随着每个代码的发布而变化,我需要通过NAME找到它。

有效的代码:

findElement(By.xpath("//*[@id='textField-1947-inputEl']"))

不起作用的代码:

findElement(By.xpath("//input[@name='type']"))findElement(By.name("type"))

网页:

<input id="textField-1947-inputEl" class="x-form-field x-form-required-field x-form-text" autocomplete="off" name="type" tabindex="14" aria-invalid="false" data-errorqtip="" style="width: 100%;" type="text">

2 个答案:

答案 0 :(得分:0)

如果您的脚本未报告Element Not FoundNoSuchElement异常,则表示您的脚本会找到多个元素,但第一个不是您想要的。

如果没有报告上述异常,请在查找之前尝试添加一些睡眠,如果睡眠可以正常工作,请更改为使用wait api。

在浏览器的DevTool中手动尝试页面上的xpath //input[@name='type'],看它能找到多少元素,第一个是你想要的元素。

如果以上所有问题仍无法解决您的问题,请检查此元素是否在框内,如果是,请在操作前切换到框架。

答案 1 :(得分:0)

xpath有两次点击,因此通过访问第二个匹配实例//input[@name='type'])[2]来解决问题。