“没有找到元素”使用 Java 在 Internet Explorer 上运行的 WebDriver 出现异常

发布于 2024-11-18 07:58:54 字数 618 浏览 1 评论 0原文

我们想将测试转移到 selenium 2,但我发现了一个我不知道如何解决的问题。

我正在对 webdriver 使用以下命令:

WebDriver driver = new InternetExplorerDriver();
driver.navigate().to("webapp");
Thread.sleep(3000);
System.out.println(driver.getPageSource());
WebElement element = driver.findElement(By.id("someid"));

在最后一行引发异常并且未找到任何元素。 同样的示例在 Firefox 中运行良好,但我们需要它在 IE 中也能使用。 我尝试过增加睡眠时间,但没有帮助。 getPageSource 方法返回正确的 html。

我还尝试使用以下命令获取 body 标签,但它返回 null。

List<WebElement> list = driver.findElements(By.tagName("body"));

我们的 Web 应用程序是在 gwt 中创建的。

你知道什么可能导致硒看不到任何元素吗?

we want to move our tests to selenium 2 and i have found an issue which i don't know how to resolve it.

I am using the following commands for webdriver:

WebDriver driver = new InternetExplorerDriver();
driver.navigate().to("webapp");
Thread.sleep(3000);
System.out.println(driver.getPageSource());
WebElement element = driver.findElement(By.id("someid"));

At the last line exception is raised and no element is found.
The same example works well in firefox, but we need it to have it in IE.
I have tried to add more sleep, but it doesn't help. getPageSource method returns correct html.

I have also tried to get body tag, with the following command, but it returns null.

List<WebElement> list = driver.findElements(By.tagName("body"));

Our web application is created in gwt.

Do you know what may cause that selenium doesn't see any element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鸠书 2024-11-25 07:58:54

您发布的代码绝对没有问题。

确保您使用一些较新的 Selenium 版本,而不是一些旧的 alpha/beta 版本。您使用哪个 IE,它有什么特殊的附加组件吗?它可以与像这样的一些最小的网页一起使用吗?

<html>
<input id='myId' />
</html>

您是否尝试过寻找其他元素?通过其他一些技术,如 xpath 或 css 选择器?你的大小写绝对正确吗?如果您保存页面的 html 并尝试使用所述测试用例在本地加载,它是否有效?您能提供一个最小的测试用例吗?作为不太可能起作用的最后手段解决方案,您可以尝试回退到 Selenium 1,使用两行代码来帮助在某些罕见情况下等待:

Selenium sele = new WebDriverBackedSelenium(driver, "webapp");
sele.waitForPageToLoad("10000");

The code you posted is absolutely problem-free.

Make sure you use some of the newer Selenium versions and not some old alpha/beta version. Which IE do you use, does it have any special add-ons? Does it work with some minimal web pages like this?

<html>
<input id='myId' />
</html>

Have you tried searching for another element? By some other technique like xpath or css selector? Is your capitalization absolutely right? If you save the html of the page and try it loading locally with said testcase, does it work? Could you provide a minimal test case? As a unlikely-to-work last resort solution, you can try to fallback to Selenium 1 for two lines of code that help waiting in some rare cases:

Selenium sele = new WebDriverBackedSelenium(driver, "webapp");
sele.waitForPageToLoad("10000");
梦屿孤独相伴 2024-11-25 07:58:54

在进行赋值语句之前尝试使用像这样的智能等待。您只需要传入当前的 WebDriver 对象和超时值。

 new WebDriverWait(driver, timeOutInSeconds).until(new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(final WebDriver theDriver) {
            return Boolean.valueOf(theDriver.findElements(By.id(elementId)).size() > 0);
        }
    });

Try using a smart wait like this before making your assignment statement. You just need to pass in your current WebDriver object and a timeout value.

 new WebDriverWait(driver, timeOutInSeconds).until(new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(final WebDriver theDriver) {
            return Boolean.valueOf(theDriver.findElements(By.id(elementId)).size() > 0);
        }
    });
铜锣湾横着走 2024-11-25 07:58:54

也许您可以尝试

driver.switchTo().window(driver.getWindowHandle());

在搜索元素之前添加。当 Webdriver 在不同服务器上的页面之间移动时(不是使用 IE,而是使用 Firefox),我遇到了这个问题。

maybe you can try to add

driver.switchTo().window(driver.getWindowHandle());

before searching for elements. I had this issue when Webdriver moved between pages on different servers (not with IE but with Firefox).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文