我需要关于在某个测试用例中等待元素的帮助。在其中一个测试中,我检查了拨号器上电话号码的准确性。在我按下应用程序中的按钮后,拨号程序将打开。问题是,要从拨号器返回应用程序,我必须按几次返回键,但次数可能因设备而异。
所以我所做的就是检查我现在在哪里。请看下面的代码。问题是,如果找不到元素,则
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
函数开始运行,然后我必须等待10秒,直到它结束。
你会建议我做什么来防止系统这次等待。
测试:
@Test
@Description("Verify that the dialer is opens on click pop up button and verify that the called number is correct")
public void checkDialerNumbers() {
**//For loop to to run on all the services.**
for (int i = 0; i < topServices.getTopServiceComponents().size(); i++) {
**//Click on the (i) service.**
topServices.getTopServiceComponents().get(i).click();
**//Verify that the Service pop up opens.**
wait.until(ExpectedConditions.visibilityOf(popUp.getClosePopUp())).isDisplayed();
**//Open dialer according to (i) service.**
switch (i) {
case 0:
**//Open dialer**
topServices.getIWantToCall().click();
**//Wait to dialer and verify that it opens.**
wait.until(ExpectedConditions.visibilityOf(dialerUtils.getCallButton())).isDisplayed();
**//Assertion - Called number match to the Expected number.**
Assertions.assertEquals(topServices.getShagrirPhoneNumber(), dialerUtils.getDialedNumbersField().getText());
WebDriverWait w = new WebDriverWait(driver(), 3);
**//Here I'm creating for loop, that will check if the pop up is displayed - if displayed > dialer closed.
//If displayed = making j to 10, to exit from the loop.
//if not displayed , so I pressing back in CATCH and going to loop again .**
for (int j = 0; j < 10; j++) {
try {
if (w.until(ExpectedConditions.visibilityOf(popUp.getClosePopUp())).isDisplayed()) {
System.out.println("Dialer closed");
j = 10;
}
} catch (TimeoutException TE) {
System.out.println("Pressing back again " + j);
driver().navigate().back();
}
}
break;
case 1:
//TODO Verify numbers in this service
break;
case 2:
//TODO Verify numbers in this service
break;
}
}
popUp.getClosePopUp().click();
}
等待司机。
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
不要使用它,不管怎样,将隐式wait
与WebDriverWait
一起使用都是不好的做法。它可能会产生意外的结果,WebDriverWait
的时间跨度为3秒,但隐式等待将使其等待10秒。
您可以使用ExpectedConditions。presenceOfElementLocated
要替换隐式等待,请创建一个通用方法,以避免反复写入
public WebElement waitForPresenceOfElementLocated(By locator) {
return wait.until(ExpectedConditions.presenceOfElementLocated(locator));
}
无法启动边缘驱动程序,我得到下面提到的错误和代码,我使用的是下面。请帮忙
最近升级到Selenium 3.7,但出现错误。 错误跟踪日志: 调试1调试2在端口2198上启动ChromeDriver 2.33.506106(8A06C39C4582FBFBAB6966DBB1C38A9173BFB1A2)仅允许本地连接。线程“main”org.openqa.selenium.WebDriverException中出现异常:等待驱动程序服务器启动时超时。构建信息:版本:“3
问题内容: 在Bash脚本中,我想执行以下操作: 即,在后台启动两个应用程序,并给它们60秒以完成其工作。然后,如果他们没有在该时间间隔内完成,请杀死他们。 不幸的是,上述内容不起作用,因为它是可执行文件,而它是Shell命令。我尝试将其更改为: 但这仍然行不通,因为只能在同一外壳程序内启动的PID上进行调用。 有任何想法吗? 问题答案: 将PID写入文件并像这样启动应用程序: 这将创建另一个hi
问题内容: 我可以长时间等待Selenium Web Driver吗? 即使我可以像下面那样设置隐式等待命令,它也不会等待我给定的时间。 这里有什么问题吗? 就我而言,我需要执行一个测试用例并等待4分钟,然后执行下一个测试用例。 我在这里使用Java。 问题答案: 其实这不是我的答案,两天前我在这里看到了这个答案,但是我没有时间应用它。今天我尝试了,这就是我想要的。 不幸的是,现在我在这里看不到该
问题内容: public class Dem { public static void main(String[] args) throws InterruptedException { WebDriver driver; String url = "https://www.google.com”; System.setProperty(“webdriver.chrome.driver”,”C:\
Selenium webdriver和Chrome driver是最新版本 Selenium webdriver:3.14.0 ChromeDriver:2.42 Java:1.8.0_181 这是运行代码后的错误。谷歌chrome根本没有推出。 严重:org.apache.commons.exec.executeException:进程退出,但出现错误:-1073741792(退出值:-1073