selenium+java自动化测试入门

1.准备jar包,

2.浏览器对应driver。

1.chromedriver 下载地址

2.Firefox的驱动geckodriver 下载地址

3.IE的驱动IEdriver 下载地址

实例代码:


public  static void main(String[] args){
		try {
			// 设置 chrome的路径
			System.setProperty("webdriver.chrome.driver", "C:\\Users\\Administrator\\Desktop\\chromedriver.exe");
			ChromeOptions options = new ChromeOptions();
			options.addArguments("disable-infobars");
			options.addArguments("start-maximized");
			//不打开真实浏览器而使用虚拟浏览器执行操作
//			options.addArguments("headless");
			WebDriver driver = new ChromeDriver(options);
			// 让浏览器访问 Baidu
			driver.get("http://www.baidu.com");
			System.out.println("1 Page title is: " + driver.getTitle());
			// 通过 id 找到 input 的 DOM
			WebElement element = driver.findElement(By.id("kw"));
			// 输入关键字
			element.sendKeys("bootstrap");
			driver.findElement(By.id("su")).click();
			Thread.sleep(2000);
			List<WebElement> titles = driver.findElements(By.cssSelector("h3.t"));
			for (WebElement title : titles) {
				WebElement webTitle = title.findElement(By.tagName("a"));
				System.out.println("webTitle:" + webTitle + ":" );
				System.err.println( webTitle.getText());
			}
			
			// 关闭浏览器
			// driver.quit();
			//杀掉进程
			WindowsUtils.killByName("chromedriver.exe");
			WindowsUtils.killByName("chromedriver.exe");
//			chrome.exe
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

下面贴出常见错误信息:

Exception in thread “main” java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:847)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:134)
at org.openqa.selenium.chrome.ChromeDriverService.access 000 ( C h r o m e D r i v e r S e r v i c e . j a v a : 35 ) a t o r g . o p e n q a . s e l e n i u m . c h r o m e . C h r o m e D r i v e r S e r v i c e 000(ChromeDriverService.java:35) at org.openqa.selenium.chrome.ChromeDriverService 000(ChromeDriverService.java:35)atorg.openqa.selenium.chrome.ChromeDriverServiceBuilder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:157)
at com.as.test.Test.main(Test.java:22)

没有添加system property
解决方案:加上 System.setProperty(“webdriver.chrome.driver”, “C:\Users\Administrator\Desktop\chromedriver.exe”);

Exception in thread “main” java.lang.IllegalStateException: The driver executable does not exist: C:\Users\Administrator\Desktop\chromedrive1r.exe
at com.google.common.base.Preconditions.checkState(Preconditions.java:585)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:146)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:141)
at org.openqa.selenium.chrome.ChromeDriverService.access 000 ( C h r o m e D r i v e r S e r v i c e . j a v a : 35 ) a t o r g . o p e n q a . s e l e n i u m . c h r o m e . C h r o m e D r i v e r S e r v i c e 000(ChromeDriverService.java:35) at org.openqa.selenium.chrome.ChromeDriverService 000(ChromeDriverService.java:35)atorg.openqa.selenium.chrome.ChromeDriverServiceBuilder.findDefaultExecutable(ChromeDriverService.java:159)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:157)
at com.as.test.Test.main(Test.java:22)

驱动位置问题
解决方案:配置正确的路径,System.setProperty第二个参数是你对应某个浏览器driver的存放位置。

~~

Exception in thread “main” org.openqa.selenium.WebDriverException: unknown error: unable to discover open pages (Driver info: chromedriver=2.0,platform=Windows NT 6.2 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 20.62 seconds Build info: version: ‘3.141.59’, revision: ‘e82be7d358’, time: ‘2018-11-14T08:25:48’ System info: host: ‘DESKTOP-I18QONF’, ip: ‘10.0.0.41’, os.name: ‘Windows 10’, os.arch: ‘amd64’, os.version: ‘10.0’, java.version: ‘1.8.0_73’ Driver info: driver.version: ChromeDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$errorHandler 0 ( J s o n W i r e P r o t o c o l R e s p o n s e . j a v a : 54 ) a t o r g . o p e n q a . s e l e n i u m . r e m o t e . H a n d s h a k e R e s p o n s e . l a m b d a 0(JsonWireProtocolResponse.java:54) at org.openqa.selenium.remote.HandshakeResponse.lambda 0(JsonWireProtocolResponse.java:54)atorg.openqa.selenium.remote.HandshakeResponse.lambdagetResponseFunction 0 ( H a n d s h a k e R e s p o n s e . j a v a : 30 ) a t o r g . o p e n q a . s e l e n i u m . r e m o t e . P r o t o c o l H a n d s h a k e . l a m b d a 0(HandshakeResponse.java:30) at org.openqa.selenium.remote.ProtocolHandshake.lambda 0(HandshakeResponse.java:30)atorg.openqa.selenium.remote.ProtocolHandshake.lambdacreateSession$0(ProtocolHandshake.java:126) at java.util.stream.ReferencePipeline$3 1. a c c e p t ( R e f e r e n c e P i p e l i n e . j a v a : 193 ) a t j a v a . u t i l . S p l i t e r a t o r s 1.accept(ReferencePipeline.java:193) at java.util.Spliterators 1.accept(ReferencePipeline.java:193)atjava.util.SpliteratorsArraySpliterator.tryAdvance(Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:181) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:168) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:157) at com.as.test.Test.main(Test.java:22)

~~

driver版本问题,使用正确版本的driver.

注意:

firefox56以下不需要安装webdriver驱动,firefox57(firefox47及以上版本)需要安装geckodriver-v0.19.1-win32/64。

IEDriverServer的版本号和Selenium的版本号一定要一致。

Demo下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值