gpt4 book ai didi

java - 线程 "main"org.openqa.selenium.NoSuchElementException : Unable to locate element 中的异常

转载 作者:行者123 更新时间:2023-12-03 16:52:28 24 4
gpt4 key购买 nike

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

5年前关闭。




Improve this question




我正在尝试使用 Selenium Webdriver 和 Java 来识别一个元素(一个文本框)。但是,它给了我 无法定位元素异常 .元素的 id 不变。这是HTML代码:

<div>
<table id="searchIdText">
<tbody>
<tr id="searchIdText-inputRow">
<td id="searchIdText-labelCell"><label
id="searchIdText-labelEl"> Search By Id <span
role="separator">:</span>
</label></td>
<td id="searchIdText-bodyEl"><input id="searchIdText-inputEl"
type="text" autocomplete="off" name="searchIdText-inputEl" size="1"
role="textbox" style="width: 100%; height: 20px;" /></td>
</tr>
</tbody>
</table>
</div>

我想要的元素是 ID 为 的文本框searchIdText-inputEl .我试过了 :
driver.findElement(By.xpath(".//*[@id='searchIdText-inputEl']"));

driver.findElement(By.name("searchIdText-inputEl"))`

也 :
driver.findElement(By.id("searchIdText-inputEl"));

但他们都没有工作。我试过等待和 Thread.sleep也。他们都没有工作。此外,更改 HTML 代码在这里不是一个选项。除了这些之外的所有建议都是受欢迎的。谢谢!

Java 代码片段如下。作为一种绝望的措施,我将 Explicit Wait 和 Thread.sleep 添加在一起,因为它们都未能单独给我结果。但是,还是没有用。
WebDriver driver = new FirefoxDriver();
WebElement element = null;
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.get(url);
Thread.sleep(60000);
element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='searchIdText-inputEl']"));
element.sendKeys("ABC");

最佳答案

原来,有一个 iFrame,它是隐藏的,并且在页面加载时控件以某种方式转移到了该 iFrame。我切换了它,现在它工作正常。

关于java - 线程 "main"org.openqa.selenium.NoSuchElementException : Unable to locate element 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739712/

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