Selenium - 等待活动

时间:2012-09-18 11:39:50

标签: unit-testing testing selenium

我需要创建一个测试用例,它将有一个facebook登录名。 那么如何强制测试用户登录facebook以继续测试呢?

这是我想要的程序:

  1. 用户点击链接

  2. 重定向到facebook登录,

  3. 检查页面内容。

2 个答案:

答案 0 :(得分:0)

使用以下方法。 1)找到要单击的链接的css选择器。

String cssSelector = ..blablalba..;

//现在您可以点击您找到的链接

driver.findElement(By.cssSelector(cssSelector)).click();

//或直接使用js:

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

2)要验证页面内容,您可以在fb页面上找到几个Web元素,只需验证该页面上是否存在该元素:

input.findElements(By.xpath("//xpath")).size() > 0
//or by css selector: 
input.findElements(By.cssSeector("html>...blablabla...")).size() > 0
driver.findElement(By.cssSelector("html>...blablabla...")).isDisplayed()

或者只是等待fb登录页面上的besic元素使用流畅的等待:

 public WebElement fluentWait(final By locator){
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(30, TimeUnit.SECONDS)
                .pollingEvery(5, TimeUnit.SECONDS)
                .ignoring(NoSuchElementException.class);

        WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
            public WebElement apply(WebDriver driver) {
                        return driver.findElement(locator);
                }
                }
);
                           return  foo;              }     ;

希望这可以帮到你)

答案 1 :(得分:0)

您也可以使用此方法:

new WebDriverWait(driver, 60).until(ExpectedConditions.presenceOfElementLocated(By.id("save")));

//您的网络对象ID是“保存”。

或者,您可以使用自定义方法。请参阅下面的示例方法,

 public static boolean waitForElement(By element, int timeOutInSeconds){
    boolean found = false;
    try{
        int counter=1;
        while(counter<timeOutInSeconds){
            if(driver.findElements(element).size()>0){
                found = true;
                break;
            }
            else{
                Thread.sleep(1000);
                counter++;
            }
        }
        return found;
    }
    catch(Exception e){
        e.printStackTrace();
        return found;
    }
}