首次使用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、第一个脚本

 @Test
    public  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("https://taobao.com");
        //程序暂停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("平板电脑")输入值,再次定位搜索按钮,点击即可自动进行一次搜索。贴张图,成功完成搜索。
注:淘宝需要登录才能搜索。可以将网址设为https://baidu.com,就不用登陆了。

在这里插入图片描述

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 的错误。一个例子。

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

    }

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

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值