美文网首页爬虫
WebUI自动化之Selenium,基于java

WebUI自动化之Selenium,基于java

作者: 小木58 | 来源:发表于2019-07-05 15:35 被阅读0次

    一、什么是Selenium?

        1、“Selenium”是一个项目的名字,它包括了一组工具和API:Selenium IDE,Selenium RC,Selenium WebDriver,和Selenium Grid等。其中Selenium IDE是一个Firefox的插,这篇文章我们主要来看下Selenium WebDriver。Selenium WebDriver 是一个支持浏览器自动化的工具。它包括一组为不同语言提供的类库和“驱动”(drivers)可以使浏览器上的动作自动化

    二、 Selenium   WebDriver  入门使用

        1、创建Selenium 的java项目

    首先我们来看下官方文档,https://www.seleniumhq.org/docs/06_test_design_considerations.jsp

    设置Selenium 2.0 Java项目的最简单方法是使用Maven.。创建一个maven项目,在pom.xml文件中引入对应版本的jar包就可以。 版本号都可以吧,看自己的需求。如图是我引入的版本号

    2、常用的一些API文档

        1)关于浏览器的一些操作,以下以Chrome为例

        打开chrome浏览器:WebDriverdriver = new ChromeDriver(); 

        最大化浏览器:driver.manage().window().maximize();

        关闭浏览器:driver.close();    driver.quit();

        打开页面:driver.get("http://www.google.com");

                        driver.navigate().to("http://www.baidu.com/"); 

                        navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退刷新等

        2)关于定位元素:

        findElement(By.id())   通过id属性定位元素

        findElement(By.name())     通过name属性定位元素

        findElement(By.className())    通过class属性定位元素

        findElement(By.tagName())    通过HTML标签名定位元素

        findElement(By.linkText())   通过链接内容定位元素

        findElement(By.partialLinkText())    通过部分链接内容定位元素

        findElement(By.xpath())        通过css选择器定位元素

        findElement(By.cssSelector())     通过xpath定位元素

    3)关于鼠标事件

    鼠标事件,首先要引入actions类。Actions action =new Actions(driver);

    actions类提供了一些常用的方法

    . contextClick()    右击

    · clickAndHold()   鼠标点击并控制

    · doubleClick()    双击

    · dragAndDrop()   拖动

    · release()        释放鼠标

    · perform()  执行所有Actions中存储的行为

    4)关于iframe

    第一个是根据frame的索引来定位,第二个是根据frame的ID或者name去识别,第三个是根据该frame内部一个元素去识别,第四个就是从frame内部切换到默认的Top Window的方法。

    这里要注意,利用索引来切换frame的时候只有对平级的iframe才有效果,如果是嵌套的iframe,建议是根据ID或者name去切换。当然某些情况下可能没有ID或者name是随即生成的,这个时候可以先找到对应的iframe的xpath。再根据xpath去切换。例如:

    WebElementtxtFMortgageDeptName=driver.findElement(By.xpath("/html[1]/body[1]/div[5]/iframe[1]" ));

    driver.switchTo().frame(txtFMortgageDeptName);

    虽然iframe的切换常用的只有以上几种方式,但是在整个过程当中,还是被iframe的坑 整得崩溃。说出来都是泪,一时半会感觉表达不清楚。如果有同行碰到坑,欢迎留言。比如已经进入了一个iframe,想要直接切换到另一个嵌套的子iframe,居然报错。后来每次都是先切换到主窗口,driver.switchTo().defaultContent();然后再进行切换。最最最重要的是,还是在看运行时,整个网页的dom结构,再决定如何去切换iframe。

    三、 Selenium WebDriver 的一些简单封装

    相关文章

      网友评论

        本文标题:WebUI自动化之Selenium,基于java

        本文链接:https://www.haomeiwen.com/subject/ptsshctx.html