javascript - Selenium 将哈希添加到 findElement

标签 javascript java maven selenium

我正在 Selenium Webdriver 中编写代码。我必须点击 HTML 代码为

的按钮

<input id="aui_3_4_0_1_300" class="aui-button-input aui-button-input-submit" type="submit">

我的代码就像下面一样简单

driver.findElement(By.id("aui_3_4_0_1_300")).click();

但是当我运行代码(使用 Maven)时,我得到了一条信息

Unable to locate element: #aui_3_4_0_1_300

我也遇到这个问题

driver.findElement(By.id("_58_login")).clear();

并且还得到了Unable to locate element: #_58_login ,但我认为这是下划线的问题。 (我通过在该行之前添加 synchronized(driver) {driver.wait(1000);} 解决了这个问题,并且它有效)。

为什么编译器添加了哈希 #

最佳答案

编译器不会向您的选择器添加任何内容 - "#" 仅代表 CSS 中的 id 以及 "." 代表类名。

因此 By.id("aui_3_4_0_1_300")By.cssSelector("#aui_3_4_0_1_300") 相同,

By.className("aui-button-input")By.cssSelector(".aui-button-input")

相同

似乎存在时间问题——动态生成所需的元素,因此您需要等待它出现在 DOM 中:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(elementToBeClickable(By.id("aui_3_4_0_1_300"))).click();

如果id“aui_3_4_0_1_300”不是常量,您可能需要通过父系id值(起始字符)来匹配元素:

wait.until(elementToBeClickable(By.cssSelector("input[id^='aui_']"))).click();

或者只是使用另一个元素的属性:

wait.until(elementToBeClickable(By.cssSelector("input[type='submit']"))).click();

关于javascript - Selenium 将哈希添加到 findElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43179856/

相关文章:

javascript - 重定向到用户定义的位置

javascript - 如何减小字体大小以适应数组中 DOM 元素的固定高度容器?

javascript - Electron 中的弹出窗口

java - 如何让用户从 Java Web 应用程序向他/她的 Twitter 帐户发送推文

javascript - 脚本438 : Object doesn't support property or method 'indexOf'

java - 将查询重定向到 google 并在 Json 对象中获取结果时出现 UnknownHostException

java - 如何验证sql查询语法?

java - Intellij IDEA Maven 插件 - 管理依赖关系

eclipse - 缺少...的 POM,没有可用的依赖信息

java - 如何使用maven pom xml文件创建目录结构