gpt4 book ai didi

java - 如何跳过await driver().manage().timeOut()

转载 作者:行者123 更新时间:2023-12-01 19:53:22 24 4
gpt4 key购买 nike

我需要有关在某些测试用例中等待元素的帮助。在其中一项测试中,我检查拨号器上电话号码的准确性。当我按下应用程序中的按钮后,拨号器将打开。问题是,要从拨号器返回到应用程序,我必须按几次返回键,但次数可能因设备而异。

所以我所做的实际上是检查我现在在哪里。看看下面的代码。问题是,如果找不到该元素,则

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);

最佳答案

不要使用它,无论如何将 implicitlyWaitWebDriverWait 一起使用都是不好的做法。它可能会产生意外的结果,WebDriverWait 的时间跨度为 3 秒,但隐式等待将使其等待 10 秒。

您可以使用ExpectedConditions.presenceOfElementLocated来替换隐式等待,创建一个通用方法以避免一遍又一遍地编写

public WebElement waitForPresenceOfElementLocated(By locator) {
return wait.until(ExpectedConditions.presenceOfElementLocated(locator));
}

关于java - 如何跳过await driver().manage().timeOut(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59066892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com