2011-08-08 66 views
4

我遇到webdriver的一個奇怪問題。我有一個本地環境和一個遠程環境來執行我的測試;他們在Firefox中都能在兩種環境中工作,但在Internet Explorer 8中,他們只能在本地工作。Webdriver無法在遠程IE中找到元素

每當我對遠程服務器運行測試時,它甚至不會找到用於登錄的文本框元素。我在查找元素時使用了一個等待,我試圖增加時間直到分鐘,但沒有任何結果。我可以通過源代碼在IE瀏覽器中看到元素。我甚至比較了兩者生成的html,並且是相同的。

我使用的是通過JBehave(JBehave-Web的硒3.3.4硒,即驅動-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); 
      } 
     }; 
    } 

任何想法爲什麼不同的行爲?

回答

9

我發現這個問題,這是Internet Explorer和遠程服務器的安全問題。要修復它只是將遠程服務器添加到受信任的站點(Tools > Options > Security Tab > Trusted Site

+0

修復了我的問題!謝謝把我的頭髮拉出來。 – DaveHogan

+0

對於我來說,當我將它添加到受信任的站點時,就停止了找到任何元素。 (Win7,IE8,webdriver 2.21) – hithwen

+0

有關完整的說明列表:https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver –

相關問題