一、WebElement常用API

click():触发当前元素的点击事件

clear():清空内容

sendKeys():文本框中写入内容、按键操作

element.sendKeys(Keys.CONTROL,"a");//ctrl+a 全选 
element.sendKeys(Keys.CONTROL,"x");//ctrl+x 剪切 
element.sendKeys(Keys.CONTROL,"c");//ctrl+c 复制 
element.sendKeys(Keys.CONTROL,"v");//ctrl+v 粘贴 
element.sendKeys(Keys.ENTER);//回车 
element.sendKeys(Keys.BACK_SPACE);//删除 
element.sendKeys(Keys.SPACE);//空格键

getTagName():获取元素的标签名

getAttribute(属性名):根据属性名获取元素属性值

getText():获取当前元素的文本值

二、WebDriver常用API

get(String url):访问指定url页面

getCurrentUrl():获取当前页面的url地址

getTitle():获取当前页面的标题

getPageSource():获取当前页面源代码

quit():关闭驱动对象以及所有相关的窗口

close():关闭当前窗口

navigate对象:导航栏,关于浏览器的基本功能操作,大部分都是由navigate对象提供的

//获取navigate对象
Navigation navigation = driver.navigate();
//访问指定的url地址
navigation.to("https://www.jd.com");
Thread.sleep(2000);
//刷新当前页面
navigation.refresh();
Thread.sleep(2000);
//浏览器回退操作
navigation.back();
Thread.sleep(2000);
//浏览器前进操作
navigation.forward();
Thread.sleep(2000);
driver.quit();

window基本操作:关于窗口的设置,基本都是由window对象提供的

//获取window对象
Window window = driver.manage().window();
//窗口位置
Point point = window.getPosition();
System.out.println(point.getX());
System.out.println(point.getY());
//窗口大小
Dimension dimension = window.getSize();
System.out.println(dimension.getWidth());
System.out.println(dimension.getHeight());
//最大化
window.maximize();
//全屏
window.fullscreen();
Thread.sleep(2000);
driver.quit();

三、时间等待

1.硬性等待

Thread.sleep(long millis)

2.隐式等待

driver.manage.timeouts().implicitlyWait(long time,TimeUnit unit);

在设置的超时时间范围内不断查找元素,直到找到元素或者超时为止

缺点:

        设置时针对全局的,在WebDriver实例整个声明周期有效,但并不是所有的元素都需要等待

        只能等待元素存在,不能适用条件更复杂的情况,如元素可点击、元素可见

3.显示等待

显示等待通常是自己自定义的代码,用来等待某个条件发生后再继续执行后续代码(如元素存在、元素可点击、元素可见等)

WebDriverWait wait = new WebDriverWait();

WebElement element = wait.until(expectCondition);

优点:

        每个一段时间扫描一次页面,检查元素是否满足等待结果条件,比如查找元素,则检查元素是否存在,不存在则继续等待,直到找到或超时

        该方式不是全局设置,因此特定需要等待的元素可以这样处理,推荐优先使用这种方式

方法 等待条件
presenceOfElementLocated 页面元素再页面中存在
visibilityOfElementLocated 页面元素再页面存在并且可见
elementToBeClickable 页面元素是否再页面上可被点击
WebElement webElement = webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='高级搜索']/..")));
WebElement webElement = webDriverWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='高级搜索']/..")));
WebElement webElement = webDriverWait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//span[text()='高级搜索']/..")));

4. FluentWait一直等待直到某个条件出现

System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
        
        WebDriver driver = new ChromeDriver();
        
        driver.get("www.test.com");
        driver.manage().window().maximize();
        
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                
                   .withTimeout(45, TimeUnit.SECONDS)
             
                   .pollingEvery(5, TimeUnit.SECONDS)
             
                   .ignoring(NoSuchElementException.class);
             
        WebElement ele1 = wait.until(new Function<WebDriver, WebElement>() {
             
             public WebElement apply(WebDriver driver) {
         
               return driver.findElement(By.id("xxxxxxx"));
         
             }
         
           });

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注