启动浏览器

如何启动浏览器已在上篇文章中说明,这里还是以chrome为例,firefox、IE启动方式相同。

 //启动浏览器

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/*启动IE需要的包
import org.openqa.selenium.ie.InternetExplorerDriver;
启动firefox需要的包
import org.openqa.selenium.firefox.FirefoxDriver;*/
public class NewTest{
public static void main(String[] args) { //设置chromedriver地址 System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); //driver即为浏览器对象
WebDriver driver = new ChromeDriver(); }
}

浏览器的操作方法可以在WebDriver.class中找到接口说明,本文主要关注Navigation和Window接口中的方法。

最大化浏览器

maximize方法无需参数也没有返回值,直接使用即可

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class NewTest{
public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" , "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" ); WebDriver driver = new ChromeDriver();
//最大化浏览器
driver.manage().window().maximize();
}
}
设置和获取浏览器大小

设置浏览器的大小有两个比较常见的用途:

1.多浏览器操作时方便在屏幕上查看

2.方便测试不同浏览器大小下样式的展示,例如移动端页面的显示可以将浏览器大小设置为350*600

设置浏览器大小使用setSize方法,需要Dimension对象作为参数,获取当前浏览器窗口的大小使用getSize方法,返回Dimension对象。Dimension位于org.openqa.selenium包中并提供了getHeight和getWidth方法输出高宽。

 //设置和获取浏览器大小
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
//导入Dimension
import org.openqa.selenium.Dimension;
public class NewTest
{
public static void main(String[] args)
{
Dimension dimensio;
Dimension browserSize=new Dimension(350,600);
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
//设置浏览器大小
driver.manage().window().setSize(browserSize);
//获取当前浏览器大小
dimensio=driver.manage().window().getSize();
//输出
System.out.print("浏览器当前高度为"+dimensio.getHeight()+";浏览器当前宽度为"+dimensio.getWidth());
}
}

访问连接、获取当前url和title

两种方式可以访问链接,get方法和navigate().to方法,前者较常用。获取当前页面的url和title在测试重定向的页面时有很大的作用。

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class NewTest
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver(); driver.get("http://anjuke.com");
System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle()); driver.navigate().to("http://www.baidu.com");
System.out.println("URL="+driver.getCurrentUrl()+";title="+driver.getTitle());
}
}
注意get和navigate().to方法用的是HTTP GET请求,输入的连接中必须加上http://前缀。
浏览器的前进、后退和刷新

这三个功能并不常用,了解就行了

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class NewTest
{
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
WebDriver driver = new ChromeDriver(); driver.get("http://anjuke.com");
driver.navigate().to("http://www.baidu.com");
//后退到anjuke.com
driver.navigate().back();
//前进到baidu.com
driver.navigate().forward();
//刷新当前页面
driver.navigate().refresh();
}
}
浏览器窗口之间的切换

浏览器窗口之间的切换是常用的功能,webdriver提供了switchTo方法实现窗口之间的切换,使用这个方法需要提供浏览器窗口的Handle,具体实现如下

 import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement; public class NewTest{
public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" ,
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );
WebDriver driver = new ChromeDriver();
driver.get("http://baidu.com");
//获得输入框对象
WebElement input=driver.findElement(By.xpath("//input[@id='kw1']"));
//搜索安居客
input.sendKeys("anjuke");
//获得提交按钮对象
WebElement button=driver.findElement(By.xpath("//input[@id='su1']"));
button.click();
//这里必须设定一个暂停时间,百度搜索结果页面加载的速度没有程序执行的速度快
//等待2S以等页面加载完成
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.print(e.toString());
}
//获取第一个搜索结果
WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a"));
a.click();
//获取当前浏览器窗口标识
String currentHandle=driver.getWindowHandle();
//获取所有浏览器窗口标识
Set<String> handles=driver.getWindowHandles();
for(String handle:handles){
if(handle.equals(currentHandle))
continue;
else
driver.switchTo().window(handle);
} System.out.println(driver.getCurrentUrl());
//清楚driver对象
driver.quit();
}
}

很多时候我们需要通过新开窗口的名称来切换窗口,只需要把上面的代码稍做修改,将切换窗口的功能封装成一个函数即可,请看

 import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement; public class NewTest{
public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" ,
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );
WebDriver driver = new ChromeDriver();
driver.get("http://baidu.com");
//获得输入框对象
WebElement input=driver.findElement(By.xpath("//input[@id='kw1']"));
//搜索安居客
input.sendKeys("anjuke");
//获得提交按钮对象
WebElement button=driver.findElement(By.xpath("//input[@id='su1']"));
button.click();
//这里必须设定一个暂停时间,百度搜索结果页面加载的速度没有程序执行的速度快
//等待2S以等页面加载完成
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.print(e.toString());
}
//获取第一个搜索结果
WebElement a=driver.findElement(By.xpath("//div[@id='1']/h3/a"));
a.click();
driver=switchWindow(driver,"上海二手房"); System.out.println("成功切换到"+driver.getTitle()); driver.quit();
} private static WebDriver switchWindow(WebDriver dr,String winTitle){
//获取当前浏览器窗口标识
String currentHandle=dr.getWindowHandle();
//获取所有浏览器窗口标识
Set<String> handles=dr.getWindowHandles();
for(String handle:handles){
if(handle.equals(currentHandle))
continue;
else{
dr.switchTo().window(handle);
if(dr.getTitle().contains(winTitle)){
break;
}else
continue;
}
}
return dr;
}
}
关闭浏览器窗口

直接调用close方法即可,quit方法是用来退出driver的,每一次启动chrome都会启动一个chrome.drivre进程,需使用quit方法退出。

 import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class NewTest{
public static void main(String[] args) { System.setProperty ( "webdriver.chrome.driver" ,
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe" );
WebDriver driver = new ChromeDriver();
driver.get("http://baidu.com");
driver.close();
driver.quit();
}

selenium webdriver(1)---浏览器操作的更多相关文章

  1. 使用python selenium webdriver模拟浏览器

    selenium是进行web自动化测试的一个工具,支持C,C++,Python,Java等语言,他能够实现模拟手工操作浏览器,进行自动化,通过webdriver驱动浏览器操作,我使用的是chrome浏 ...

  2. selenium WebDriver 对浏览器标签页的切换

    关于selenium WebDriver 对浏览器标签页的切换,现在的市面上最新的浏览器,当点击一个链接打开一个新的页面都是在浏览器中打开一个标签页,而selenium只能对窗口进行切换的方法,只能操 ...

  3. java selenium webdriver处理JS操作窗口滚动条

    未经作者允许,禁止转载!!! java selenium webdriver处理JS操作窗口滚动条 java selenium webdriver处理JS操作窗口滚动条 import org.open ...

  4. Python selenium webdriver设置js操作页面滚动条

    js2 = "window.scrollTo(0,0);" #括号中为坐标 当不知道需要的滚动的坐标大小时: weizhi2 = driver.find_element_by_id ...

  5. selenium webdriver处理浏览器Cookie

    有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的.WebDriver 提供了操作Cookie 的相关方法可以读取.添加和删除cook ...

  6. selenium,webdriver模仿浏览器访问百度 基础2

    学python理念  :  代码要多敲 一定要多敲 哪怕很基础  注释要清晰 由于基础1有一些注释写的很详细, 在这里有些注释没有写的很详细 可以配合基础1一起学习哦 from selenium im ...

  7. selenium元素和浏览器操作

    click和clear from selenium.webdriver.support.wait import WebDriverWait import time browser = webdrive ...

  8. 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化

    一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...

  9. selenium webdriver python 元素操作

    常用操作 click 点击某个元素 driver.find_element_by_id(“su”).click()   clear driver.find_element_by_id(“kw”).cl ...

随机推荐

  1. 利用putty实现文件在linux上传和下载

    利用putty实现文件上传和下载:1.打开windows命令提示符窗口d:(putty在d盘下)cd putty(pscp.exe所在目录)2:上传(主要利用pscp程序)pscp d:/jdk-8u ...

  2. Dao模型设计(基于Dao与Hebernate框架)

    以前没有Dao设计模型之前,一般都是这样的流程: ①先设计实体对象 学生对象: package com.itheima.domain; import java.io.Serializable; imp ...

  3. linux管理网络连接指令

    ethtool eth0  查看 eth0对应网卡的设置 ethtool -i eth0 查看 eth0网卡的驱动信息 ethtool -S eth0 查看网卡的统计信息 ethtool -s eth ...

  4. Windows平台下Qt开发环境的搭建

    Qt 是采用开源和商用双协议发布的开放源代码的图形开发类库,现在很多图形化的开源软件都使用了Qt. 下载地址:http://qt-project.org/downloads 1. 下载安装包 你可以从 ...

  5. 动态改变EasyUI grid 列宽和隐藏列

    隐藏显示 $('#yourGrid').datagrid('hideColumn','yourColumn'); $('#yourGrid').datagrid('hideColumn','yourC ...

  6. jquery 实现复选框单选

    $(function() { $(':checkbox[name=复选框name值]').each(function() {  $(this).click(function() {   if ($(t ...

  7. php MVC 及例子解释

    根据http://www.21ds.net/article/4/453改写: MVC模式在网站架构中十分常见.它允许我们建立一个三层结构的应用程式,从代码中分离出有用的层,帮助设计师和开发者协同工作以 ...

  8. textarea出现多余的空格

    今天使用textarea标签,调用数据的时候,出现一些多余的空格,如何改变属性都不能够经过某属性将空格去掉,经过查询,看了zuyi532的专栏(http://blog.csdn.net/zuyi532 ...

  9. php curl模拟post请求提交数据

    最近在做校园图书馆图书信息的采集程序,既然是图书馆图书的采集,肯定有提交搜索的页面,无非是post提交,让我想到了curl模拟提交,首先通过firebug进行抓包查询下post提交后的格式如下: tx ...

  10. TDirectory.GetLastAccessTime获取指定目录最后访问时间

    使用函数: System.IOUtils.TDirectory.GetLastAccessTime 函数定义: class function GetLastAccessTime(const Path: ...