当前位置: 首页 > 知识库问答 >
问题:

如何跳过等待驱动程序()。管理()。超时()[重复]

叶元凯
2023-03-14

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

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

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

共有1个答案

梁兴修
2023-03-14

不要使用它,不管怎样,将隐式waitWebDriverWait一起使用都是不好的做法。它可能会产生意外的结果,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