如何在IE中使用WebDriver Wait?

时间:2014-12-02 11:03:30

标签: selenium-webdriver

我有主页,如果我点击登录,它将导航到另一个页面(我必须输入登录凭据才能登录该帐户。

没有下面的代码,它完全适用于Firefox和Chrome ..但IE它不工作..我假设添加等待,以便IE问题将解决..

WebDriverWait Test_Wait=new WebDriverWait(driver,10);
 WebElement click=Test_Wait.until(ExpectedConditions.elementIfVisible("login_xpath"));

我已添加此代码..但是我收到错误将elementIfVisible更改为elementClickable ..如果我更改为elementClickable。再次给出错误来改变elementIfVisible ..如何解决这个问题??

package com.test.testCase;

import java.io.File;

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import com.test.utitlity.clickEvent;
import com.test.utitlity.globalVariables;
import com.test.utitlity.switchWindow;

public class driverManager extends globalVariables{
    public static void driverManager(){
       browser="ie";
       if(browser.equals("ie")){    
       File file = new File("./IEDriverServer.exe");        
       System.setProperty("webdriver.ie.driver", file.getPath());
       driver= new InternetExplorerDriver();
       }
      else if (browser.equals("firefox"))
       {
           driver=new FirefoxDriver();
       }
       else if (browser.equals("chrome"))
       {
           File file= new File("./chromedriver.exe");
           System.setProperty("webdriver.chrome.driver", file.getPath());
           System.out.println(file.getPath());
           driver=new ChromeDriver();
       }
       driver.get("http://www.xxxx.in");
       clickEvent.clickAt("login_xpath");
       WebDriverWait Test_Wait=new WebDriverWait(driver,10);
       WebElement click=Test_Wait.until(ExpectedConditions.elementIfVisible("login_xpath"));
       switchWindow.swindow("TST.");        

    }
}

1 个答案:

答案 0 :(得分:0)

从我可以看到的代码中,您使用的不正确。 首先,你必须等待元素可见,然后你必须点击它,但你反过来使用它,因此它无法找到登录按钮,因为它已被点击和你已进入新页面。

请使用这样的等待。这将适用于所有浏览器(IE,总是一个障碍,但它仍然可以工作):

    try{
        WebDriverWait Test_Wait=new WebDriverWait(driver,20);
        WebElement click=Test_Wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("login_xpath")));
        clickEvent.clickAt("login_xpath");
    }catch(Throwable e){
        System.err.println("The login element is not found");
    }