【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( "执行结束" );
}
}