我对webdriver有一个奇怪的问题。我有一个本地环境和一个远程环境来执行我的测试;它们在两种环境中都可以在Firefox中运行,但是使用Internet Explorer 8,它们只能在本地工作。
每当我针对远程服务器运行测试时,它甚至都找不到用于登录的文本框元素。我在寻找元素时正在等待,我试着将时间增加到几分钟,但没有。我可以在IE中看到浏览源代码的元素。我甚至比较了两者生成的html并且是一样的。
我通过JBehave使用硒(JBehave-web-selenium-3.3.4 with 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);
}
};
}
知道不同行为的原因吗?
答案 0 :(得分:11)
我发现了这个问题,这是Internet Explorer和远程服务器的安全问题。要解决此问题,只需将远程服务器添加到可信站点(Tools > Options > Security Tab > Trusted Site
)
答案 1 :(得分:0)
这适用于。在IE上,转到Internet选项->安全->取消选中所有选项卡的启用保护模式。并重新运行您的项目