gpt4 book ai didi

javascript - Selenium 将哈希添加到 findElement

转载 作者:行者123 更新时间:2023-12-02 13:30:58 27 4
gpt4 key购买 nike

我正在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com