1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 首次使用Selenium控制谷歌浏览器 进行一些简单自动化操作

首次使用Selenium控制谷歌浏览器 进行一些简单自动化操作

时间:2019-01-24 18:09:46

相关推荐

首次使用Selenium控制谷歌浏览器 进行一些简单自动化操作

先附上官网链接selenium和文档链接

官网的介绍和例子比较简单易上手,可以参考官方文档进行学习。

介绍

Selenium 是一系列工具和库的综合项目,这些工具和库支持 web 浏览器的自动化。

Selenium 控制网页浏览器。

Selenium 有很多功能, 但其核心是 web 浏览器自动化的一个工具集, 它使用最好的技术来远程控制浏览器实例, 并模拟用户与浏览器的交互。

它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选框,并单击文档中的链接。 它还提供许多其他控件,比如鼠标移动、任意 JavaScript 执行等等。

虽然 Selenium 主要用于网站的前端测试,但其核心是浏览器用户代理库。 这些接口在应用程序中无处不在,它们鼓励与其他库进行组合,以满足您的目的。

1、创建maven项目,在pom.xml中添加依赖

<dependency>//selenium的依赖<groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId></dependency>//chrome-driver依赖,使用那个浏览器添加那个浏览器即可<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-chrome-driver</artifactId></dependency>//firefox-driver依赖,使用那个浏览器添加那个浏览器即可<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-firefox-driver</artifactId></dependency>

2、下载驱动,配置path

首先在浏览器设置中查看浏览器的版本,下载对应的驱动,淘宝的chrome镜像。

解压后得到chromedriver.exe

将chromedriver.exe所在的当前路径添加到path中或者将chromedriver.exe放到已有的path路径下 或者在程序中手动设置。

3、第一个脚本

@Testpublic void chromeDriverTest() throws InterruptedException {//如果将chromedriver.exe所在的当前路径添加到了path则不需要在此设置,如果无效可以重启idea再次尝试。// System.setProperty("webdriver.chrome.drive","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");//开启会话,即打开浏览器ChromeDriver chromeDriver = new ChromeDriver();chromeDriver.get("");//程序暂停5秒Thread.sleep(5000);//结束会话,关闭浏览器chromeDriver.quit();}

浏览器被打开,且在淘宝首页。

4、进行一些测试。

如何定位一些元素?贴一张官方文档的图。

在jquery中使用$(“id”)这种形式,在selenium中也是类似。通过静态类By即可调用相关方法。获取所需要的元素。

如何在浏览器中定位到想要定位的元素。F12打开浏览器控制台,点击控制台左上角的带有鼠标的小按钮,再点击需要定位的元素即可,控制台自动跳转到Elements页,并选中元素。右键copy,可以选择的方式很多,可以尝试一下。可以看到淘宝首页的输入框id为q,则可以使用By.id()定位。

知道如何定位元素后,使用WebElement element = driver.findElement(By.id("q"))获取并保存当前元素。再element.sendKeys("平板电脑")输入值,再次定位搜索按钮,点击即可自动进行一次搜索。贴张图,成功完成搜索。

注:淘宝需要登录才能搜索。可以将网址设为,就不用登陆了。

5、官网的一些其他例子

获取所有li中的值。

List<WebElement> elements = driver.findElements(By.tagName("li"));for (WebElement element : elements) {System.out.println("Paragraph text:" + element.getText());}

等待

WebDriver通常可以说有一个阻塞API。因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriver不跟踪DOM的实时活动状态。这伴随着一些我们将在这里讨论的挑战。

根据经验,大多数由于使用Selenium和WebDriver而产生的间歇性问题都与浏览器和用户指令之间的 竞争条件 有关。例如,用户指示浏览器导航到一个页面,然后在试图查找元素时得到一个 no such element 的错误。一个例子。

@Testpublic void firstWebDriverTest(){WebDriver driver = new ChromeDriver();driver.get("");driver.findElement(By.id("kw")).sendKeys("cheese" + Keys.ENTER);// Initialize and wait till element(link) became clickable - timeout in 10 secondsWebElement firstResult = new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"2\"]/div/div/h3/a")));// Print the first resultSystem.out.println(firstResult.getText());}

10为最大等待时间,在搜索可cheese后若网络不好,或其他原因,页面中没有相应的结果,会导致找不到所定位的元素,出现no such element 的错误。.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"2\"]/div/div/h3/a")));会在等待的十秒中测试有没有所定位的元素,找到则继续运行程序,没有则等待一会儿。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。