我正在尝试自动化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">
答案 0 :(得分:0)
如果您的脚本未报告Element Not Found
或NoSuchElement
异常,则表示您的脚本会找到多个元素,但第一个不是您想要的。
如果没有报告上述异常,请在查找之前尝试添加一些睡眠,如果睡眠可以正常工作,请更改为使用wait
api。
在浏览器的DevTool中手动尝试页面上的xpath //input[@name='type']
,看它能找到多少元素,第一个是你想要的元素。
如果以上所有问题仍无法解决您的问题,请检查此元素是否在框内,如果是,请在操作前切换到框架。
答案 1 :(得分:0)
xpath有两次点击,因此通过访问第二个匹配实例//input[@name='type'])[2]
来解决问题。