`

selenium webdriver学习(二)————对浏览器的简单操作

 
阅读更多

selenium webdriver对浏览器的简单操作

 

打开一个测试浏览器

对浏览器进行操作首先需要打开一个浏览器,接下来才能对浏览器进行操作。但要注意的是,因为Chrome Driver是Chromium 项目自己支持和维护的,所以你必需另外下载安装Chrome Driver,详细介绍查下他们的wiki

 

import java.io.File;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class OpenBrowsers {

	
	public static void main(String[] args) {
		//打开默认路径的firefox
		WebDriver diver = new FirefoxDriver();
		
		//打开指定路径的firefox,方法1
		System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe"); 
		WebDriver dr = new FirefoxDriver();
		
		//打开指定路径的firefox,方法2
		File pathToFirefoxBinary = new File("D:\\Program Files\\Mozilla Firefox\\firefox.exe");  
		FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);  
		WebDriver driver1 = new FirefoxDriver(firefoxbin,null);
		
		//打开ie
		WebDriver ie_driver = new InternetExplorerDriver();
		
		//打开chrome
		System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
		System.setProperty("webdriver.chrome.bin",
                                             "C:\\Documents and Settings\\gongjf\\Local Settings"
                                             +"\\Application Data\\Google\\Chrome\\Application\\chrome.exe");		
		
	}

}

 打开指定路经ie和chrome方法和ff一样。

 

打开1个具体的url

打开一个浏览器后,我们需要跳转到特定的url下,看下面代码:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class OpenUrl {
	public static void main(String []args){
		String url = "http://www.51.com";
		WebDriver driver = new FirefoxDriver();
		
		//用get方法
		driver.get(url);
		
		//用navigate方法,然后再调用to方法
		driver.navigate().to(url);
	}
}

 

 

如何关闭浏览器

测试完成后,需要关闭浏览器

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class CloseBrowser {
	public static void main(String []args){
		String url = "http://www.51.com";
		WebDriver driver = new FirefoxDriver();
		
		driver.get(url);
		
		//用quit方法
		driver.quit();
		
		//用close方法	
		driver.close();
		}
}

 

如何返回当前页面的url和title

有时候我们需要返回当前页面的url或者title做一些验证性的操作等。代码如下:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class GetUrlAndTitle {
	public static void main(String []args){
		String url = "http://www.51.com";
		WebDriver driver = new FirefoxDriver();
		
		driver.get(url);
		
                //得到title
		String title = driver.getTitle();

                //得到当前页面url
		String currentUrl = driver.getCurrentUrl();
		
                //输出title和currenturl
		System.out.println(title+"\n"+currentUrl);
		
		}
}

 

 

其他方法

  • getWindowHandle()    返回当前的浏览器的窗口句柄
  • getWindowHandles()  返回当前的浏览器的所有窗口句柄
  • getPageSource()         返回当前页面的源码


小结

从上面代码可以看出操作浏览器的主要方法都来自org.openqa.selenium.WebDriver这个接口中。看了一下源代码这些方法都是在org.openqa.selenium.remote.RemoteWebDriver这个类中实现的,然后不同浏览的driver类继承RemoteWebDriver。

 

 

 

 

 

 

分享到:
评论
4 楼 qi_ling2005 2014-10-17  
tianzhihehe 写道
系统的验证比较复杂,需要验证码。能不能手工输入验证码登录之后,启动selenium来接管firefox呢?
官网上不了,我就厚颜在这直接问了,呵呵。


对于验证码,普遍的做法是把公司的ip设置白名单,就是公司内部访问网站不出验证码。
你说的手工输验证码其实也是可以实现的。
最简单的方法是到填写验证码那一步sleep几秒,手工填。
还有一种比较智能的方法,就是启动selenium打开浏览器后,到填写验证码的那一步,你不断去取验证码输入框的值,如果它的值长度刚好等于验证码长度,则进行下一步。
...
//到输入验证码这一步,假设验证码长度为4

while(driver.findElement(By.id("verificationCodeFiledID")).getAttribute("value").length()!=4){

      Thread.sleep(1000);
}

//手动输完验证码进行下一步
...



上面的不够好(用了Thread.sleep, 如果你不输入会一直循环), 下面用selenium自带的wait方式,看如下代码,假设百度输入框为你的验证码:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class test {

	/**
	 * @param args
	 * @throws InterruptedException
	 */
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
		WebDriver driver = new FirefoxDriver();
		driver.get("http://www.baidu.com");
		(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {

			@Override
			public Boolean apply(WebDriver d) {

				return d.findElement(By.id("kw")).getAttribute("value")
						.length() == 4;                           
			}
		}); //设置10秒超时,输入4个字母后执行下面的步骤
		driver.findElement(By.id("su")).click();
		System.out.println(driver.getTitle());
		driver.quit();

	}

}



3 楼 tianzhihehe 2014-08-21  
系统的验证比较复杂,需要验证码。能不能手工输入验证码登录之后,启动selenium来接管firefox呢?
官网上不了,我就厚颜在这直接问了,呵呵。
2 楼 qi_ling2005 2012-12-12  
blueskyzs 写道
奇怪,为什么我的firexfox没有安装在默认目录下,安装在D盘的,WebDriver diver = new FirefoxDriver() 就可以直接打开浏览器呢,并没有报错!


System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe"); 
你代码里有这句话吗?有就可以打开
1 楼 blueskyzs 2012-11-08  
奇怪,为什么我的firexfox没有安装在默认目录下,安装在D盘的,WebDriver diver = new FirefoxDriver() 就可以直接打开浏览器呢,并没有报错!

相关推荐

    selenium webdriver 学习

    1.2 selenium webdriver学习(二)————对浏览器的简单操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 selenium webdriver学习(三)------------执行js脚本 . . . . . . . . . . . . . ...

    python+selenium+unittest 只启动一次浏览器方法(csdn)————程序.pdf

    WebDriver是Selenium的一个接口,允许编程方式地控制浏览器。在这个例子中,我们使用了Chrome浏览器的WebDriver(chromedriver)。 2. **unittest框架**: Python内置的单元测试框架,可以编写和组织测试用例。...

    selenium自动化测试实践——基于python语言

    作者提到 webdriver API 对元素的定位和操作有丰富的知识点,并通过学习这些知识点来整理博客文章,最终形成了这本书。 书中还涉及了参数化脚本、测试报告生成和测试结构调整等高级话题。参数化测试可以让测试用例...

    Selenium自动化测试:基于Python语言.azw3

    Selenium WebDriver 入门知识、Selenium Python脚本、使用unittest 编写单元测试、生成HTML格式的测试报告、元素定位、Selenium Python API 介绍、元素等待机制、跨浏览器测试、移动端测试、编写一个iOS测试脚本、...

    selenuium webdriver jar包

    这个版本的Selenium WebDriver提供了对多种浏览器的支持,包括Chrome、Firefox、Internet Explorer等,通过对应的WebDriver实现。例如,你可以使用`ChromeDriver`来控制Chrome浏览器,或者使用`FirefoxDriver`来控制...

    python 重新使用一个Webdriver的解决方法(csdn)————程序.pdf

    在Python的UI自动化测试中,经常需要使用Selenium的WebDriver来控制浏览器进行各种操作。然而,每次实例化一个新的WebDriver对象时,浏览器都会被重新启动,这在处理多个场景时可能导致不必要的资源浪费。为了解决这...

    Selenium浏览器驱动最新版 - 2018-05-18

    在2018年5月18日发布的这个压缩包中,包含了Selenium支持的三个主流浏览器——Firefox、Google Chrome和Microsoft Edge的对应WebDriver驱动程序。 **1. Selenium WebDriver** Selenium WebDriver 是Selenium的一个...

    RFS——RobotFramework+Selenium2library安装包齐全

    Selenium WebDriver是一个用于自动化Web浏览器的强大工具,它可以模拟用户在浏览器上的各种操作,例如点击链接、填写表单、验证页面元素等。Selenium2Library提供了许多关键词,使用户能轻松地在Robot Framework中调...

    Selenium-Remote-Driver:与Selenium Webdriver服务器的Perl绑定

    ### 二、Selenium WebDriver Selenium WebDriver与浏览器直接通信,它取代了Selenium RC,后者需要在服务器端运行一个浏览器实例。WebDriver API支持多种编程语言,包括Java、Python、C#、Ruby以及我们的重点——...

    FireFoxDriver-WebDriver

    Selenium WebDriver是一款强大的自动化测试工具,用于模拟真实用户在浏览器上的操作。它支持多种浏览器,包括Firefox、Chrome、Internet Explorer等。在本话题中,我们将聚焦于Selenium 3.3.1版本与Firefox的配合...

    selenium-webdriver-crystal:Crystal编程语言的Selenium Webdriver客户端

    Selenium WebDriver是一个强大的自动化测试工具,它允许程序员模拟用户行为,对Web应用程序进行自动化测试。这个工具支持多种编程语言,包括Java、Python、C#、Ruby等,而现在,它也有了针对Crystal语言的客户端——...

    selenium之foxfire的gwebdriver驱动

    当我们谈论"Selenium之Firefox的gwebdriver驱动"时,实际上是指使用Selenium与Firefox浏览器交互时需要的一个关键组件——GeckoDriver。 **GeckoDriver**,全称Mozilla Gecko Driver,是由Mozilla开发的WebDriver...

    webdrivers.cr:使用Crystal管理您的Selenium Webdrivers

    本文将深入探讨一个与Selenium相关的Crystal库——`webdrivers.cr`,它帮助开发者更有效地管理和更新Selenium WebDriver。 首先,让我们了解什么是`webdrivers.cr`。这是一个专门为Crystal编程语言设计的库,它的...

    WebDriver FirefoxDriver jar包带源码

    在本压缩包中,包含的是针对Firefox浏览器的WebDriver实现——FirefoxDriver,以及相关的Selenium库。 Selenium WebDriver是Selenium项目的一部分,它提供了一个统一的API,使得开发者可以编写跨浏览器的测试脚本。...

    ChormeDriver适配123版本的Chorme浏览器

    ChromeDriver是一款专为谷歌浏览器(Chrome)设计的自动化测试工具,它允许开发人员或测试工程师使用Selenium WebDriver接口控制浏览器进行自动化操作。标题提到的是ChromeDriver的特定版本——123.0.6312.8600,这...

    Selenium2自动化测试实战 基于Python语言

    《Selenium2自动化测试实战——基于Python语言》是一本针对软件测试工程师,尤其是对Web应用程序自动化测试感兴趣的读者的专业书籍。作者虫师在2016年10月编写了这本书,尽管时间已过去数年,但Selenium作为自动化...

    用Python写爬虫之selenium大法(csdn)————程序.pdf

    安装Selenium非常简单,只需在命令行中输入`pip install selenium`。然而,要使Selenium正常工作,还需要安装相应的浏览器驱动。对于Chrome,你需要下载与你当前浏览器版本匹配的ChromeDriver,并将其放置在Python的...

    Firefox33和selenium-java-2.44

    在2.44.0版本中,Selenium提供了一系列API,可以控制浏览器执行各种操作,如点击链接、填写表单、验证页面元素等。这个版本可能包含了修复的bug、性能提升和新的功能特性。 标签“selenium”进一步强调了讨论的核心...

Global site tag (gtag.js) - Google Analytics