【selenium】浏览器控制&元素操作

功能 方法
设置浏览器窗口大小  setSize() & maximize()
控制浏览器前进  forward()
控制浏览器后退  back()
清除文本,如果是一个文件输入框 clear()
刷新当前页面 refresh()
关闭当前窗口,只关闭单个窗口 close()
退出相关的驱动程序和关闭所有窗口 quit()
在元素上模拟按键输入 sendKeys(*value)
单击元素 click()
提交表单 submit()
返回元素的尺寸 getSize()
获得属性值 getAttribute(name)
设置该元素是否用户可见 isDisplayed()

 

1.设置浏览器大小-setSize() & maximize()

可以根据需求使用setSize()方法设置浏览器的窗口大小,也可以通过方法maximize()设置浏览器窗口全屏;

package com.test.selenium;

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

/**
 * 通过
 * setSize()
 * maximize()
 * 方法设置浏览器窗口大小
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException
    {
        System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //随机设置窗口大小
        //driver.manage().window().setSize(new Dimension(500,800));
        //设置全屏
        driver.manage().window().maximize();
        driver.get("http://www.baidu.com/");
        Thread.sleep(5000);
        driver.quit();
        System.out.println( "执行结束" );   
    }  
}

2.控制浏览器前进控制浏览器后退

测试的时候也会遇到打开两个浏览器窗口,遇到这种情况需要互相切换窗口就需要用到 forward()和 back()方法实现

package com.test.selenium;

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

/**
 * 通过
 * back()
 * forward()
 * 方法设置浏览器窗口大小
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException
    {
        System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        //第一个页面
        String firstUrl = "http://www.baidu.com/";
        System.out.printf("访问百度:",firstUrl);
        Thread.sleep(4000);
        driver.get(firstUrl);
        
        //第二个页面
        String secondUrl = "https://mail.qq.com/";
        System.out.printf("访问qq邮箱:",secondUrl);
        driver.get(secondUrl);
        Thread.sleep(4000);
        
        System.out.printf("退回第一个页面",firstUrl);
        driver.navigate().back();
        Thread.sleep(3000);
        
        System.out.printf("前进到第二个页面",secondUrl);
        driver.navigate().forward();
        Thread.sleep(3000);

        driver.quit();
        System.out.println( "执行结束" );   
    }  
}

3.清除文本,并在元素上模拟按键输入,点击提交

click()、clear()、 sendKeys()方法如何使用,接下来上代码:

package com.test.selenium;

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

/**
 * 
 * click()
 * clear()
 * sendKeys
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException
    {
        System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
       
        String url = "https://mail.qq.com/";
        System.out.printf("访问qq邮箱:",url);
        driver.get(url);
        Thread.sleep(4000);
        driver.findElement(By.id("qqLoginTab")).click();
        Thread.sleep(2000);
        //有iframe结构,需要先进入到iframe里面去
        driver.switchTo().frame("login_frame");
        Thread.sleep(2000);
        //点击
        driver.findElement(By.id("switcher_plogin")).click();
        Thread.sleep(2000);
        //清楚文本
        driver.findElement(By.id("u")).clear();
        Thread.sleep(2000);
        //输数信息
        driver.findElement(By.id("u")).sendKeys("15453525111");
        Thread.sleep(2000);
        driver.findElement(By.id("p")).clear();
        Thread.sleep(2000);
        driver.findElement(By.id("p")).sendKeys("xxxxx");
        Thread.sleep(2000);
        driver.findElement(By.id("login_button")).click();
        Thread.sleep(4000);      

        driver.quit();
        System.out.println( "执行结束" );   
    }  
}

6.提交表单--submit()

submit()方法用于提交表单,这里特别用于没提交按钮的情况,例如搜索框输入关键字之后的“回车”操作,对于这种情况就可以使用 submit()来实现提交搜索框的内容

package com.test.selenium;

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

/**
 * 
 * submit()
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException
    {
        System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
       
        String url = "https://www.baidu.com/";
        System.out.printf("访问百度:",url);
        driver.get(url);
        Thread.sleep(4000);
      
        driver.findElement(By.id("kw")).sendKeys("博客园");
        Thread.sleep(2000);
        //通过click实现搜索
        //driver.findElement(By.id("su")).click();
        //通过submit实现提交功能
        driver.findElement(By.id("su")).submit();
        Thread.sleep(4000);      

        driver.quit();
        System.out.println( "执行结束" );   
    }  
}

7.获取元素相关属性

有的时候我们需要获取相关元素对应的一些属性,这里就总结常用的几种。

package com.test.selenium;

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

/**
 *getSize()
 *getAttribute()
 *isDisplayed()
 *
 */
public class App 
{
    public static void main( String[] args ) throws InterruptedException
    {
        System.setProperty("webdriver.chrome.bin", "G:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
       
        String url = "https://www.baidu.com/";
        System.out.printf("访问百度:",url);
        driver.get(url);
        Thread.sleep(4000);
      
        WebElement eleme =driver.findElement(By.id("kw"));
        Thread.sleep(1000);     
        //获得百度输入框的尺寸
        System.out.print("获得元素得size:");
        System.out.println(eleme.getSize());    

        //返回元素的属性值
        System.out.print("获得元素得getAttribute:");
        System.out.println(eleme.getAttribute("type"));  

      //返回元素的结果是否可见,返回结果为 True 或 False
        System.out.print("元素是否可见:");
        System.out.println(eleme.isDisplayed());   

        driver.quit();
        System.out.println( "执行结束" );   
    }  
}
posted @ 2022-04-09 13:27  小墨儿  阅读(93)  评论(0编辑  收藏  举报