Java+Selenium重要的接口

我们把这些Selenium方法或者接口分成三类,一类是driver相关,也就是操作浏览器本身设置,第二类是元素相关,就是一些元素的点击,输入等操作,第三类是一些工具支持类,例如截图,日志输出,事件监听。

这一篇介绍manage()接口下常用方法的使用。从Selenium的源码文件,可以知道,manage是得到Option这类接口用的。本文介绍的方法,都是在Option这个接口下面可以找到的。Option接口是这样描述的:An interfacefor managing stuff you would do in a browser menu,所以,这些操作都是来控制浏览器本身。
 

1、Timeout接口相关方法介绍

Timeout接口描述文字部分,下面有三个常见的接口。

implicitlyWait(long time, TimeUnit unit);

setScriptTimeout(long time, TimeUnit unit);

pageLoadTimeout(long time, TimeUnit unit);

       implicitlyWait(),这个在前面介绍过了,叫隐式时间等待。我们来看看这个接口的描述部分,大致意思是:隐式时间等待是在查找元素的时候,设置一个最大时间值,如果driver第一次没有找到网页元素,那么就继续找,直到消耗了设置的最大时间值,还是没有找到,那么就抛出没有找到元素的异常。如果在设置时间范围内就找到了该元素,那么就执行下一行代码,不需要再等时间,这就是隐式等待的含义。所以,隐式时间等待一般结合查找网页元素一起。

       setScriptTimeout(),作用是,在设置规定的时间内,等待异步脚本的执行结束,而不是里面抛出错误。这个在执行javascript脚本的时候可能会使用,后面我们介绍了使用Javascript脚本执行Selenium相关操作后在介绍具体使用方法。

        pageLoadTimeout(),字面意思就网页加载超时,作用就是在设置规定时间内,等待网页完整加载完成,而不是里面抛出错误。我们知道如果网速慢,或者网页元素太多,例如网页做了大面积渲染,肯定会造成网页加载速度变慢。这个接口的作用就是,来处理这类问题的。从这个角度来看,我们前面的脚本中设置时间等待的语句应该换成这个语句更合适一些,毕竟我们的目的就是等待网页加载完成。

package com.ralation.week1;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

public class pageLoadTest {
    //pageLoadTimeout联系

    public static void main(String[] args){
        System.setProperty("webdriver.chrome.driver",".\\tools\\chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

        webDriver.manage().window().maximize();

        webDriver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

//        webDriver.get("https://www.icloud.com/");
        webDriver.get("https://www.baidu.com");

        webDriver.quit();
    }
}

2、window接口相关方法介绍

window接口。windows接口下有几个方法,主要是用来控制浏览器窗口设置,例如窗口大小,最大,最小,全屏,位置。我们先来看看window接口下有什么方法。

void setSize(Dimension targetSize);
void setPosition(Point targetPosition);
Dimension getSize();
Point getPosition();
void maximize();
void fullscreen();

       前面使用过了maximize(),这里就不再介绍,第一个我们介绍setSize(Dimension targetSize)和getPosition(),这里要注意下参数 targetSize这个是一个类,不是一个普通的数据类型,来看看如何写关于浏览器位置设置的自动化脚本。

3、Navigation接口相关方法介绍

本篇介绍Navigation接口,主要包括平时浏览器的前进,后退,打开网址,刷新当前页操作。在Navigation接口下,我能找到下面四个方法:

void back()

void forward()

void to(String url)

void to(URL url)

void refresh()

       先来解释下他们的作用,back()就是浏览器上地址栏前面向左的箭头,一般叫后退操作。forward()就是浏览器上地址栏前面向右边的箭头,一般叫前进操作,或者转到下一页。to(String url)就是在当前网页打开一个新的网页,这个和新的tab打开是有区别的,to(URL url)也是一样,就是url被作为一个URL对象传入,这个不怎么使用,这里不介绍。refresh()这个就是浏览器刷新按钮操作,或者等同于按下F5。
示例

package com.ralation.week1;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

public class navigationPractice {

    public static void main(String[] args) throws InterruptedException {


        System.setProperty("webdriver.chrome.driver",".\\tools\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        driver.manage().window().maximize();

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

        driver.get("https://www.baidu.com");

        Thread.sleep(1000);

        driver.navigate().to("http://jd.com");

        Thread.sleep(1000);

        driver.navigate().back();

        Thread.sleep(1000);

        driver.navigate().forward();

        Thread.sleep(1000);

        driver.navigate().refresh();
        
        driver.quit();
        
    }

}
发布了17 篇原创文章 · 获赞 0 · 访问量 178

猜你喜欢

转载自blog.csdn.net/qq_37637691/article/details/100069447