【发布时间】:2018-06-18 11:13:58
【问题描述】:
我是自动化的新手,我已经使用 JUnit 开发了使用 selenium webdriver 的自动化测试脚本,这是我的要求
我已经开发了自动化测试脚本。对于我的代码上的一些操作,我需要一些时间来执行下一个命令,比如查找元素并加载页面,所以我使用 Thread.sleep()。所以现在我发现关于使用 Thread.sleep 的信息不适合制作测试脚本
所以我的问题是谁能说我如何给我的代码动态等待时间我的代码如下,
System.setProperty("webdriver.chrome.driver", "//path of the chrome driver");
driver = new ChromeDriver();
driver.get("https://url for my org");
Thread.sleep(5000); //to load the login page of my Org
driver.findElement(By.xpath("my login xpath")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("my login xpath")).sendKeys("username");
Thread.sleep(2000);
driver.findElement(By.xpath("my password xpath")).click();
Thread.sleep(1000);
driver.findElement(By.xpath("my password xpath")).sendKeys("my password");
driver.findElement(By.xpath("login button")).click();
Thread.sleep(6000); //for giving the time to login Org
我根据我的要求在我的代码上使用了不同类型的等待时间。 如果我去等待类我能达到相同的等待时间吗 那里?
对于获得显式等待,我的问题是不同的,如果我们定义如下,则为不同的地方提供恒定的等待时间,
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("element_xpath")));
element.click();
//for another wait
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("element_xpath")));
element.sendKeys("something"); //Here it's wait time(10 seconds) is same to the after the click action wait time.
那么,为什么我在没有必要的情况下在同一时间等待所有等待部分?如果有其他方法请告诉我?
如果我错了,请纠正我。
谢谢。
【问题讨论】:
-
你可以把你的 driver.findElement 放到一个线程中,你可以加入到主线程中
-
@mBogaz 感谢您的回复。而且我是自动化的新蜜蜂,我不明白你的意思。我如何让我的 driver.findElement 成为主线程。 :(
-
@mBogaz 严重不明白你的答案:(我问如何给我的代码不同的等待时间。所以你能对你发布的答案做一些解释吗。
-
编辑了我的帖子。
标签: java multithreading selenium selenium-webdriver junit