我遇到了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();
}
}
答案 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(定位器));
这将明确等待给定元素..