Webdriver 未在远程 IE 中找到元素

发布于 2024-11-28 14:22:13 字数 1040 浏览 5 评论 0原文

我的网络驱动程序遇到了一个奇怪的问题。我有一个本地环境和一个远程环境来执行我的测试;它们在 Firefox 的两种环境中都可以很好地工作,但对于 Internet Explorer 8,它们只能在本地工作。

每当我对远程服务器运行测试时,它甚至找不到用于登录的文本框元素。我在查找元素时使用等待,并且尝试将时间增加到几分钟,但没有任何结果。我可以在IE浏览源代码中看到该元素。我什至比较了它们生成的 html,结果是相同的。

我通过 JBehave 使用 selenium (JBehave-web-selenium-3.3.4 和 selenium-ie-driver-2.0b3)

检索我正在使用的元素:

public WebElement getElementById(String elementId){
    return getMyWaiter()
    .waitForMe(By.id(elementId), TEST_DELAY_IN_S);
}

public WebElement waitForMe(By locator, int timeout) {
        WebDriverWait wait = new WebDriverWait(driver, timeout);
        return wait.until(Waiter.presenceOfElementLocated(locator));
}


public static Function<WebDriver, WebElement> presenceOfElementLocated(
            final By locator) {
        return new Function<WebDriver, WebElement>() {
            @Override
            public WebElement apply(WebDriver driver) {
                return driver.findElement(locator);
            }
        };
    }

知道为什么会有不同的行为吗?

I'm having a strange issue with webdriver. I have a local environment and a remote environment to perform my tests; they work great in Firefox in both environment, but with Internet Explorer 8, they only work in local.

Whenever I run the tests against the remote server it doesn't even find the textbox elements to make the login. I'm using a wait when finding elements, and I tried to increase the time until minutes, but nothing. I can see the element in IE browsing through the source code. I even compared the html generated from both of them and is the same.

I'm using selenium through JBehave (JBehave-web-selenium-3.3.4 with selenium-ie-driver-2.0b3)

To retrieve the element I'm using:

public WebElement getElementById(String elementId){
    return getMyWaiter()
    .waitForMe(By.id(elementId), TEST_DELAY_IN_S);
}

public WebElement waitForMe(By locator, int timeout) {
        WebDriverWait wait = new WebDriverWait(driver, timeout);
        return wait.until(Waiter.presenceOfElementLocated(locator));
}


public static Function<WebDriver, WebElement> presenceOfElementLocated(
            final By locator) {
        return new Function<WebDriver, WebElement>() {
            @Override
            public WebElement apply(WebDriver driver) {
                return driver.findElement(locator);
            }
        };
    }

Any idea why the different behaviour?

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

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

发布评论

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

评论(2

━╋う一瞬間旳綻放 2024-12-05 14:22:13

我发现了这个问题,这是 Internet Explorer 和远程服务器的安全问题。要修复此问题,只需将远程服务器添加到受信任站点(工具 > 选项 > 安全选项卡 > 受信任站点

I found the issue, it's a security issue with Internet Explorer and remote servers. To fix it just add the remote server to the Trusted Sites (Tools > Options > Security Tab > Trusted Site)

一身软味 2024-12-05 14:22:13

这适用于。在 IE 上转到 Internet 选项 ->安全->取消选中所有选项卡的启用保护模式。并重新运行您的项目

This works for. On IE goto Internet Option -> Security -> Uncheck Enable Protected mode for all the tabs. And rerun your project

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