zoukankan      html  css  js  c++  java
  • 章节十三、3-封装显示等待通用方法

    一、封装一个包含了一个期望条件的类(显示等待的期望条件有很多,此处用于举例)

     1 package utility;
     2 
     3 import org.openqa.selenium.By;
     4 import org.openqa.selenium.WebDriver;
     5 import org.openqa.selenium.WebElement;
     6 import org.openqa.selenium.support.ui.ExpectedConditions;
     7 import org.openqa.selenium.support.ui.WebDriverWait;
     8 
     9 public class WaitTypes {
    10     
    11     WebDriver driver;
    12     public WaitTypes(WebDriver driver) {
    13         this.driver = driver;
    14     }
    15     
    16 //    封装了一个显式等待的方法,里面包含等待元素可用时再继续执行操作,否则打印异常信息
    17     public WebElement waitForElement (By locator,int waitTime) {
    18         WebElement element = null;
    19 //        不使用try、catch来捕获异常,如果代码有问题执行就会中断,无法继续执行后面的代码
    20         try{
    21             System.out.println("最長等待了"+waitTime+"秒元素可用");
    22             WebDriverWait wait = new WebDriverWait(driver,waitTime);
    23             element = wait.until(
    24                     ExpectedConditions.visibilityOfElementLocated(locator));
    25             System.out.println("元素在頁面上出現了");
    26         }catch(Exception e){
    27             System.out.println("元素没有在页面上出现");
    28         }
    29         return element;
    30     }
    31 }

     所有期望条件有:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html

    二、调用封装的显示等待方法

     1 package utility;
     2 
     3 import org.junit.jupiter.api.AfterEach;
     4 import org.junit.jupiter.api.BeforeEach;
     5 import org.junit.jupiter.api.Test;
     6 import org.openqa.selenium.By;
     7 import org.openqa.selenium.WebDriver;
     8 import org.openqa.selenium.WebElement;
     9 import org.openqa.selenium.ie.InternetExplorerDriver;
    10 import org.openqa.selenium.support.ui.ExpectedConditions;
    11 import org.openqa.selenium.support.ui.WebDriverWait;
    12 
    13 class ExplicitWaitWithUtilityDemo {
    14     private WebDriver driver;
    15     private String url;
    16 //    聲明一下這個類的對象
    17     private WaitTypes wait;
    18 
    19     @BeforeEach
    20     void setUp() throws Exception {
    21         driver = new InternetExplorerDriver();
    22 //        實例化已經封裝好的顯式等待方法
    23         wait = new WaitTypes(driver);
    24         url = "https://www.yahoo.com/";
    25         driver.manage().window().maximize();
    26 //        隐式等待3秒
    27 //        driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
    28     }
    29 
    30     @Test
    31     void test() {
    32         driver.get(url);
    33         WebElement el = driver.findElement(By.id("uh-signin"));
    34         el.click();
    35 //        直接調用封裝好的顯式等待方法
    36         WebElement emailField = wait.waitForElement(By.cssSelector("#login-username"), 2);
    37         emailField.sendKeys("test");
    38 //        driver.findElement(By.cssSelector("#login-username")).sendKeys("test");
    39     }
    40     
    41     @AfterEach
    42     void tearDown() throws Exception {
    43         Thread.sleep(2000);
    44         driver.quit();
    45     }
    46 }

    运行结果:

    如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴可以相互一起学习讨论。

  • 相关阅读:
    Android Studio [Toast]
    Android Studio [RecyclerView/瀑布流显示]
    Android Studio [RecyclerView/列表视图]
    NABCD分析 [团队任务]
    Android Studio [ListView]
    Android Studio [ImageView/使用第三方库加载图片]
    Android Studio [真机测试/开发者模式]
    Android Studio [登陆界面]
    android开发笔记
    gzframework开发记录
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/10868231.html
Copyright © 2011-2022 走看看