1. 程式人生 > >Java+Selenium3自動化入門3---等待方式

Java+Selenium3自動化入門3---等待方式

    在做UI自動化的時候,很多時候我們會遇到各種錯誤資訊,比如頁面元素找不到(Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element:),這個在做自動化的時候是比較常見的問題。那麼一般導致找不到元素的原因最多的就是等待時間,很多時候是頁面還未載入完成或者元素出現的時間有延遲,所以設定等待時間。

        現在的網頁中很多是互動的,你要尋找元素的時候,有可能是基於上面的步驟操作,才出現這個元素,而且由於網路的原因,元素載入可能需要一定的時間,所以這裡一定要在查詢元素的時候使用等待。  

        WebDriver中提供了三種等待方式:

1.*implicitlyWait():隱式等待,查詢元素的時候一直找,直到超過設定的最大等待時間,會丟擲沒有找到元素的異常

package com.yumeihu.D1;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class WaitThree {
    public static void main(String[] args) throws Exception {    
        WebDriver driver = new FirefoxDriver();                 
        driver.manage().window().maximize();   
         /*
           #等待頁面元素載入
           #其實大多數情況下定位不到元素就是兩種問題:1 有frame,2 沒有加等待。  
        */
        driver.get("http://www.baidu.com");
        driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
        driver.findElement(By.id("kw")).sendKeys("you are so beautiful");
        driver.findElement(By.id("su")).click();

 2.pageLoadTimeout();

比如我們訪問一個外國網站的話,速度會很慢,這個時候我們要等頁面元素全部載入完成,才可以進行下一步操作,在設定的時間內頁面未載入完成,此時就會報錯。
package com.yumeihu.D1;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PageLoadTimeOuter{
	public static void main(String[] args) throws Exception {    
	WebDriver driver = new FirefoxDriver();        
	//瀏覽器最大化             
	driver.manage().window().maximize();   
	//*pageLoadTimeout() 在設定的時間內等待網頁載入完成,如果超時,則丟擲異常 
	driver.manage().timeouts().pageLoadTimeout(1,TimeUnit.SECONDS); 
	driver.get("https://www.earthtv.com/en"); 
        System.out.println("已經成功進入:"+ driver.getTitle());

        這裡我們設定了一秒的等待時間,在一秒的時間內,該網頁未載入完成,所以,控制檯會輸出頁面載入超時的錯誤,所以,我們合理的利用這些等待時間,在合適的位置,就可以知道為什麼元素定位不到,很快的找到解決辦法。。。。。。。。。。。

3.Thread.sleep();

強制等待,將當前執行緒掛起指定的時間。()括號中的時間是毫秒;比如Thread.sleep(3000);指的是等待3秒。
package com.yumeihu.D1;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PageLoadTimeOuter{
    public static void main(String[] args) throws Exception {    
           WebDriver driver = new FirefoxDriver();        
           //瀏覽器最大化     
         driver.manage().window().maximize();
         String url = "http://www.baidu.com";
         driver.get(url+"/");
         driver.findElement(By.id("kw")).sendKeys("Lion  is  so  beautiful");
         //等待2秒後再執行點選
         Thread.sleep(2000);
         driver.findElement(By.id("su")).click(); 
        
           so~SO~
          好了,這次的等待時間就說到這裡奮鬥

相關推薦

Java+Selenium3自動化入門3---等待方式

    在做UI自動化的時候,很多時候我們會遇到各種錯誤資訊,比如頁面元素找不到(Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element:),這個在做自動化的時候是比較常見

Java+Selenium3自動化入門1---準備環境

在這裡我們就不介紹環境的配置了,不懂的同學可以Google一下,eclipse+java以及java環境配置好了,在開始之前呢,我們還需要先準備一個東西,selenium的核心jar包,做UI自動化就靠它,裡面包含了各種定位和呼叫瀏覽器的元素的方法都整合好了,可以直接呼叫。沒

Java+Selenium3自動化入門9-Selenium中截圖方法-TakeScreenshot

        在測試的過程中,很多情況下在我們測試遇到BUG時,或者需要驗證某個元素的狀態或者顯示的數值時,可以將螢幕擷取下來進行對比又或者在異常或者錯誤發生的時候將螢幕擷取並儲存起來,供後續分析和除錯所用,那麼在自動化測試過程中當然也是需要這些操作來輔助我們測試的,那麼今

java多線程3方式

run current java se 自己 cut 了解 itl detail pan Java多線程實現方式主要有三種:繼承Thread類、實現Runnable接口、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式

軟體測試系列之Java Selenium3自動化測試

一.背景和目的        我大概是2015年開始接觸Selenium這個web自動化測試框架。當時是selenium2.48好像,從Selenium2.0開始,就加入了webdriver,實際上,我們說的selenium自動化測試,大部分情況都

JAVA介面自動化框架3——session提取及傳遞

使用場景: 一些場景必須登入後才可以使用,這就需要在後續的介面中使用登入後產生的session,本章主要介紹如何獲取session,及把引數傳遞到其他的介面中;我的介面是查詢介面,無引數 一、登入需要的引數 package com.qa.parameters; publ

【效率優化專題】2.java陣列拷貝的3方式和效率對比

Java語言中常用的陣列拷貝方式有:for迴圈拷貝,通過Arrays.copyOf()方法,System.arraycopy和clone()方法拷貝。1 測試場景我們用最簡單的整數陣列來測試。首先建立一個整型陣列,並且初始化資料。然後分別用這3種方式來拷貝陣列同樣的次數。來測分別試這三種情況的效率。1.1 初

Selenium3 + Python3自動化測試系列六——等待方式

等待 一、等待是什麼,為什麼要等待 在做自動化測試,設計測試用例的時候,有時下一步的操作會依賴上一步的結果或者內容,上一步操作成功之後才能進行下一步操作等, 這時候,我們就需要使用等待,來判斷上一步操作是否完成,什麼時候可以進行下一步操作。否則,上一步操作如果花費的時間較長, 還沒有完成,就去進行下一

【Selenium2+Java自動化3)】-操作瀏覽的基本方法

臨時文件 mage 關閉 log 開始 str 打開 img bsp 前言   前面已經把環境搭建好了,這從這篇開始,正式學習selenium的webdriver框架。我們平常說的 selenium自動化,其實它並不是類似於QTP之類的有GUI界面的可視化工具,我們要學的是

Selenium3+python自動化3.7版本)-chrome67環境搭建

ffffff 十月 imp win7 64 api 新的 one 工具 調用 前言 目前selenium版本已經升級到3.0了,網上的大部分教程是基於2.0寫的,所以在學習前先要弄清楚版本號,這點非常重要。本系列依然以selenium3為基礎。 一、selenium簡介 S

java中int->String 3方式效率分析

nbsp ecif digits bsp num turn mode getchar obj 1.0 int轉String方式 java中,int轉String共有如下3種方式 (1) 字符串拼接(即num+"") (2) String.valueof(num) (3) I

Android測試,Selenium3自動化測試,Python3 測試,Java介面測試

谷歌的Android生態系統正在不斷地迅速擴張。有證據表明,新的移動OEM正在攻陷世界的每一個角落,不同的螢幕尺寸、ROM /韌體、晶片組以及等等等等,層出不窮。於是乎,對於Android開發人員而言,處理儲存碎片變得越來越困窘。 不過幸運的是,Android(還有iOS)開發人員可以無限制地訪問一些先進的

java介面自動化3——POST請求方法封裝過程和測試

這個介面自動化測試框架到目前為止,我們已經完成了Get請求的封裝和必要的工具類的支援。接下來這篇,我來介紹如何完成POST請求的封裝過程。一般來說,在一個專案中,介面測試很多時候就是測試Get和POST方法,其他的請求方式的介面很少,佔的比重幾乎不計。所以,這個Java介面自動化測試框架的核心就是G

實現java多執行緒的3方式,99%人沒用過第3

實現多執行緒的3種方式 1、繼承Thread類 看jdk原始碼可以發現,Thread類其實是實現了Runnable介面的一個例項,繼承Thread類後需要重寫run方法並通過start方法啟動執行緒。 繼承Thread類耦合性太強了,因為java只能單繼承,所以不利

java設計模式精講 Debug 方式+記憶體分析 第3章 軟體設計七大原則

軟體設計七大原則 3-1 本章導航 3-2 開閉原則講解 3-3 開閉原則coding 3-4 依賴倒置原則講解+coding 3-5 單一職責原則講解 3-6 單一職責原則coding 3-7 介面隔離原則講解+coding

java設計模式精講 Debug 方式+記憶體分析-第2章 UML急速入門

java設計模式精講 Debug 方式+記憶體分析-第2章 2-1 本章導航 UML的定義 UML的特點 UML2.2的分類 UML類圖 記憶技巧 UML時序圖 2-2 UML類圖講解 2-3

java執行緒的3種建立方式

Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或其子類的例項。Java可以用三種方式來建立執行緒,如下所示: 1)繼承Thread類建立執行緒 2)實現Runnable介面建立執行緒 3)實現Callable介面建立執行緒 4)通過執行緒池的方式建立(這

SpringMVC的入門程式(Controller控制器實現的3方式)

專案結構: 實現步驟: ①匯入jar包  ②web.xml配置核心控制器( DispatcherServlet ) ex: <?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http:

使用Maven執行Java main的3方式

maven使用exec外掛執行java main方法,以下是3種不同的操作方式。 一、 從命令列執行 1、執行前先編譯程式碼,exec:java不會自動編譯程式碼,你需要手動執行mvn compile來完成編譯。 mvn compile 2、編譯完成後,執行exec執

Java進階(四十二)Java中多執行緒使用匿名內部類的方式進行建立3方式

Java中多執行緒使用匿名內部類的方式進行建立3種方式 package cn.edu.ujn.demo; // 匿名內部類的格式: public class ThreadDemo {