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

如何在为多个浏览器编写脚本的TestNG框架中声明显式等待?

尉迟鸿熙
2023-03-14

我正在编写一个selenium脚本,其中使用了显式wait。我有一个脚本,其中我有三个方法调用IE,FireFox和Chrome浏览器。

公共类para{WebDriver驱动程序;

@BeforeClass
void InvokeFF() {
    System.setProperty("webdriver.gecko.driver",
            "C:/Users/Vinay/workspace_n/EGuru/drivers/geckodriver.exe");
    driver = new FirefoxDriver();
    // driver.get("http://seleniumpractise.blogspot.in/2016/08/bootstrap-dropdown-example-for-selenium.html");
    System.out.println("Firefox invoked");
    System.out.println("Firefox thread:" + Thread.currentThread().getId());
}

@BeforeClass(enabled = false)
void InvokeIE() {
    System.setProperty("webdriver.ie.driver",
            "C:/Users/Vinay/workspace_n/EGuru/drivers/IEDriverServer.exe");
    driver = new InternetExplorerDriver();
    System.out.println("Internet Explorer invoked");
    System.out.println("IE thread:" + Thread.currentThread().getId());
}

@BeforeClass(enabled = false)
void InvokeGC() {
    System.setProperty("webdriver.chrome.driver",
            "C:/Users/Vinay/workspace_n/EGuru/drivers/chromedriver.exe");
    driver = new ChromeDriver();
    // driver.get("http://www.seleniumeasy.com");
    System.out.println("Chrome invoked");
    System.out.println("Chrome thread:" + Thread.currentThread().getId());

}

@Test
void Auto() throws Exception {
    WebDriverWait wait = new WebDriverWait(driver, 20);
    driver.get("file:///C:/Users/Vinay/Desktop/Upload1.html");
    wait.until(ExpectedConditions.visibilityOfElementLocated(By
            .xpath(".//*[@id='1']")));
    driver.findElement(By.xpath(".//*[@id='1']")).click();
    Runtime.getRuntime().exec("C:\\Users\\Vinay\\Desktop\\AutoUpload.exe");
}

}

共有1个答案

步炯
2023-03-14

我想你要找的是一种隐性的等待,而不是显性的等待。这可以通过在您的驱动程序创建之后使用下面的代码行来完成(使用它所需要的任何驱动程序)

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

显然,将10秒更改为您想要的任何默认超时。

 类似资料:
  • 在 Gradle 构建脚本中有两种类型的变量可以声明:局部变量 ( local ) 和 扩展属性 ( extra ) .

  • 我有这个功能文件 方案概要: 给定用户在我的网站上 当用户是管理员或主控编辑器时 3.用户在 /page/页面 4.和用户单击/标题/链接 5.然后用户应该被带到/目标页面/ 对于“给定用户在我的网站上”,我编写了登录详细信息,这将为场景中的每个示例打开新的浏览器。我希望单一浏览器打开并执行所有示例。有人能帮忙吗

  • 已经用uniapp写好了一个多链钱包app,现在需要在app中增加一个dapp浏览器功能,应该如何实现呢? 我目前搜到的资料,按我大致的理解是,在vue页面里面添加一个<web-view>用来打开远程的web3网站,根据uniapp的官网说明,一个vue页面就是一个webview,那么这个vue页面中打开web3网站的webview组件就是一个子webview。剩下的问题就是 uniapp编写好的

  • 问题内容: 我正在编写一个dhtml应用程序,该应用程序创建系统的交互式仿真。用于模拟的数据是从另一个工具生成的,并且已经有大量的旧数据。 模拟中的某些步骤要求我们播放音频的“浊音”片段。我一直找不到在多个浏览器上完成此操作的简便方法。 Soundmanager2几乎可以满足我的需要,但它只能播放mp3文件,并且旧数据也可能包含一些.wav文件。 有没有其他图书馆可能会帮助您? 问题答案: 您将必

  • 大家好,我有一个TestNG测试套件,它按顺序执行测试。但在它开始运行测试之前。它打开所需数量的浏览器,然后逐个运行测试。我想将此行为更改为打开一个浏览器,运行test/s并关闭浏览器。然后打开另一个浏览器,运行test/s并关闭,依此类推。这可能吗? 我在IntelliJ上使用TestNG,JAVA。示例测试套件: 所有的测试都继承了主类,它有@BeforeClass和@AfterClass方法

  • 问题内容: 我在Elasticsearch索引中的文档中存储了值。 我需要对值进行一些日期操作,并返回要在过滤器中使用的布尔值。 该脚本涵盖了几行,但我无法运行它。 我编写了其他可以正常工作的脚本,但是我对Groovy的了解甚少,而对Elastic search的了解却很少。 我可以用脚本找到的每个样本只有一行,只有一行。 所以基本上我将如何采用这个完全有效的脚本 并把它变成像 我对创建一个只写一