Selenium测试用例执行速度问题

时间:2014-07-25 14:04:52

标签: java testing selenium

我遇到了selenium的问题,我可以通过测试用例,但问题是测试用例的执行非常快。有什么方法或属性可以控制执行的速度。我一直面临着这个问题。任何帮助将不胜感激。 以下是我的脚本供参考。

package test.selenium;

import java.util.concurrent.TimeoutException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class test{
    WebDriver driver;

    public TrafficGroupUpdateTestNG() {
    }

    /**
     * @throws java.lang.Exception
     */
    @BeforeTest
    public void setUp() throws Exception {
        // Use Internet Explorer and set driver;
        System.setProperty("webdriver.ie.driver",
                "D:\\IBM\\Selenium\\IEDriverServer.exe");
        driver = new InternetExplorerDriver();

        // And now use this to visit URL
        driver.get("URL Of JSP");
    }

    /**
     * @throws java.lang.Exception
     */
    @AfterTest
    public void tearDown() throws Exception {
        driver.close();
    }

    @Test
    public final void test() {
        final WebElement formElement = driver.findElement(By.id("search"));

        final Select drelement = new Select(drelement.findElement(By.id("my_input")));


        drelement.selectByIndex(0);

        final WebElement submit = driver.findElement(By.id("Submit"));
        submit.click();

    }

}

3 个答案:

答案 0 :(得分:1)

听起来,当document.ready状态更新时,来自AJAX调用的元素不可见或准备就绪。使用我的webdevs,我让他们在加载东西时添加一个等待类,并在完成后删除它。

结果,我能够创建等待AJAX​​完成的this "WaitForPageLoad" method。它在C#中,但很简单,可以转换为Java。

答案 1 :(得分:0)

我用过

Thread.sleep(2000);

使页面等待的便捷方式。

答案 2 :(得分:0)

有很多方法可以控制执行速度。

隐瞒等待

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

通过提供这种简单的等待,webdriver等待它返回对象未找到之前的20秒

显式等待

  

WebDriverWait wait = new WebDriverWait(driver,timeoutInSeconds);             wait.until(ExpectedConditions.visibilityOfElementLocated(定位器));

这将明确等待给定元素..