精华内容
下载资源
问答
  • 自动化测试工具selenium使用介绍

    千次阅读 2011-08-22 00:48:09
    最近公司Test部门开了个讲座介绍如何做好WEB自动化测试,由于我是做开发的,但对测试人员如何工作不是很了解,就去听了下。讲座中一个测试工具还不错,于是就深入自学了下,内容如下   一、Selenium 的版本 ...
     最近公司Test部门开了个讲座介绍如何做好WEB自动化测试,由于我是做开发的,但对测试人员如何工作不是很了解,就去听了下。讲座中一个测试工具还不错,于是就深入自学了下,内容如下
    

     

    一、Selenium 的版本

    Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。

    selenium-core 是使用HTML的方式来编写测试脚本,你也可以使用 Selenium-IDE来录制脚本,但是目前Selenium-IDE
    只有 FireFox 版本。

    Selenium-RC 是 selenium-remote control 缩写,是使用具体的语言来编写测试类。

    selenium-rc 支持的语言非常多,这里我们着重关注java的方式。这里讲的也主要是 selenium-rc,因为个人还是喜欢这种
    方式 :-)

     二、一些准备工作

    1、当然是下载 selenium 了,到 http://www.openqa.org/selenium/ 下载就可以了,记得选择selenium-rc 的版本。

    2、学习一下 xpath 的知识。贴给大家个教程http://blog.csdn.net/terryzero/archive/2009/09/06/4523834.aspx
         一定要学习这个,不然你根本看不懂下面的内容!

    3、安装 jdk1.5

     三、selenium-rc 一些使用方法

    在 selenium-remote-control-0.9.0/server 目录里,我们运行 java -jar selenium-server.jar
    之后你就会看到一些启动信息。要使用 selenium-rc ,启动这个server 是必须的。

    当然,启动的时候有许多参数,这些用法可以在网站里看看教程,不过不加参数也已经足够了。

    selenium server 启动完毕了,那么我们就可以开始编写测试类了!

    我们先有个概念,selenium 是模仿浏览器的行为的,当你运行测试类的时候,你就会发现selenium 会打开一个

    浏览器,然后浏览器执行你的操作。

     好吧,首先生成我们的测试类:

    1. public class TestPage2 extends TestCase {      
    2.   private Selenium selenium;      
    3.      
    4.   protected void setUp() throws Exception {      
    5.      String url = “http://xxx.xxx.xxx.xxx/yyy”;      
    6.      selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort      
    7.                                 (), "*iexplore", url);      
    8.      selenium.start();      
    9.                   
    10.      super.setUp();                           
    11.               
    12.   }      
    13.      
    14.   protected void tearDown() throws Exception {      
    15.               
    16.       selenium.stop();      
    17.       super.tearDown();      
    18.                   
    19.      
    20.   }      
    21.      
    22. }     

    代码十分简单,作用就是初始化一个 Selenium 对象。其中:
    url : 就是你要测试的网站
    localhost:  可以不是localhost,但是必须是 selenium server 启动的地址
    *iexplore :  可以是其它浏览器类型,可以在网站上看都支持哪些。

    下面我就要讲讲怎么使用selenium 这个对象来进行测试。

     

    1、测试文本输入框

    假设页面上有一个文本输入框,我们要测试的内容是 在其中输入一些内容,然后点击一个按钮,看看页面的是否跳转
    到需要的页面。

    1. public void test1() {      
    2.               
    3.     selenium.open("http://xxx.xxx.xxx/yyy");      
    4.               
    5.     selenium.type("xpath=//input[@name='userID']""test-user");      
    6.     selenium.click("xpath=//input[@type='button']");      
    7.     selenium.waitForPageToLoad("2000");      
    8.     assertEquals(selenium.getTitle(), "Welcome");      
    9. }     

    上面的代码是这个意思:
    1、调用 selenium.open 方法,浏览器会打开相应的页面
    2、使用 type 方法来给输入框输入文字
    3、等待页面载入
    4、看看新的页面标题是不是我们想要的。

     

    其中的selenium 脚本 firefox插件selenium IDE 来录制生成。如果你测试IE也可以先用firefox录制然后经过略微更改便能使用。

     

    2、测试下拉框

     

    1. public void test1() {          
    2.                   
    3.     selenium.open("http://xxx.xxx.xxx/yyy");          
    4.                   
    5.     selenium.select("xpath=//SELECT[@name='SBBUSYO']""index=1");      
    6.     selenium.click("xpath=//input[@type='button']");          
    7.     selenium.waitForPageToLoad("2000");          
    8.     assertEquals(selenium.getTitle(), "Welcome");          
    9. }        

    可以看到,我们可以使用 select 方法来确定选择下拉框中的哪个选项。
    select 方法还有很多用法,具体去看看文档吧。

     

    3、测试check box

    1. public void test1() {              
    2.                       
    3.     selenium.open("http://xxx.xxx.xxx/yyy");              
    4.                       
    5.     selenium.check("xpath=//input[@name='MEICK_000']");        
    6.     selenium.click("xpath=//input[@type='button']");              
    7.     selenium.waitForPageToLoad("2000");              
    8.     assertEquals(selenium.getTitle(), "Welcome");              
    9. }         

    我们可以使用 check 方法来确定选择哪个radio button

     

    4、得到文本框里的文字

    assertEquals(selenium.getValue("xpath=//input[@name='WNO']"), "1");  
    getValue 方法就是得到文本框里的数值,可不是 getText 方法,用错了可就郁闷了。

     

    5、判断页面是否存在一个元素

    assertTrue(selenium.isElementPresent("xpath=//input[@name='MEICK_000']"));  
    一般这个是用来测试当删除一些数据后,页面上有些东西就不会显示的情况。

     

    6、判断下拉框里选择了哪个选项

    assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1");  
    这个可以用来判断下拉框显示的选项是否是期望的选项。

     

    7、如果有 alert 弹出对话框怎么办?

    这个问题弄了挺长时间,可以这样来关闭弹出的对跨框:
    if(selenium.isAlertPresent()) {   
      
       selenium.getAlert();   
      
    }  
    其实当调用 selenium.getAlert() 时,就会关闭 alert 弹出的对话框。
    也可以使用 System.out.println(selenium.getAlert()) 来查看对跨框显示的信息。

    在测试的时候,有的人会显示许多alert 来查看运行时的数据,那么我们可以用下面的方式来关闭那些 alert:
    while(selenium.isAlertPresent()) {       
          
       selenium.getAlert();       
          
    }   


    8、如何测试一些错误消息的显示?

    assertTrue(selenium.getBodyText().indexOf("错误消息")>=0);  
    切记: getBodyText 返回的时浏览器页面上的文字,不回包含html 代码的,如果要显示html 代码,用下面这个:

    System.out.println(selenium.getHtmlSource());  

    以上就是最常用的几个方法了,例如 click, type, getValue 等等。
    还有就是一定要学习 xpath, 其实xpath 也可以有“与、或、非”的操作:

    selenium.check("xpath=//input[(@name='KNYKBN')and(@value='Y')]");  

     

    展开全文
  • 开源自动化测试工具selenium使用

    千次阅读 2014-04-23 09:22:41
    开源自动化测试工具selenium使用 (玉米猫) 一 Selenium概述: Selenium是现在使用最为广泛的一款开源自动化测试工具,也是非商业支持的稳定性易用性最好的一款自动化测试工具。和由HP提供强大商业支持的QTP...


    一       Selenium概述:

    Selenium是现在使用最为广泛的一款开源自动化测试工具,也是非商业支持的稳定性易用性最好的一款自动化测试工具。和由HP提供强大商业支持的QTP相比,selenium不仅在软件投资上有比较大的优势,在针对web测试的稳定性上也有绝对的优势。以下介绍的内容会通过和QTP在各方面的比较中进行,并针对简单的测试样例,对基本的使用进行简单说明。

     

    二       Selenium的组成:

    和QTP等其他工具类似,selenium也有几个组件组成,同时在使用的时候还需要一些开发的IDE平台进行支持。

    对于初步的简单使用,需要先掌握seleniumIDE,RC的基本使用,以及对象识别方式Xpathe的基本知识。

    1)        seleniumIDE:

    selenium和QTP类似,同样需要先进行一定的脚本录制工作,而它默认支持的录制浏览器是firefox,IDE就充当了一个脚本记录的工作,它的表现形式为firefox的一款插件。



    它可以记录准备过程中,用户在firefox上的制定网址下所做的一切操作,并转化为自己需要的一种开发语言,包括:java、perl、PHP、C#、Ruby等等。

     

    2)        RC:

    RC是selenium的特色组件,它通过从底层向不同的浏览器发出动作指令,达到用脚本控制web的效果,和QTP的activeX驱动的模式有着本质的不同,只要浏览器的动作指令原理不发生本质性的变化,就可以利用selenium达到自动化测试的效果,不会由于出现新的浏览器,还要等待HP重新开发相应的activeX控件。

     


    其他:

    由于selenium的非商业支持,所以很多类似于QTP中的组件都使用了firefox插件的办法得到了补充。

    Firebug:帮助用户对页面上的对象进行识别,它可以准确捕捉到任何一个可见元素和不可见元素,同时支持由对象找代码和由代码找对象的使用方法,非常类似于QTP的spy和控件高亮显示功能。

    Xpather:帮助用户利用xpath标记对象的位置信息,根据xpath的实现方式,可以将页面上的每一个控件元素做唯一性标识,非常类似于QTP的对象库,区别在于Xpath只记录元素的位置样式属性,不会记录截图。

     

    三       Selenium的简单使用:

    1)        测试的准备工作:

    这里所说的准备工作,只一个自动化测试的准备,预计基本的测试用例等内容已经准备完成。

    假如被测系统为ADCPX:

    首先:用firefox打开被测系统的首页,启动IDE插件。



    需要注意的是,IDE的baseUrl一定是当前要测试的web首页,默认生成的第一个testcase的名称可以通过属性进行更改。一个IDE中可以录制或生成多个testcase。


     

    通过IDE的options-format,调整source中的显示内容,只有显示HTML的内容时,才能对代码进行手动调整,增加或减少动作。


     

    当format为HTML时,可以激活table标签,对录制的内容进行手动调整。这部分基本上可以理解为QTP的关键字视图。Table整体分上下两部分,上边是已经录制的动作效果,下边可以手动添加新动作或修改已有的动作。

    Command:动作的基本指令,录制会自动记录,也可以点击下拉列表选择适当的指令;

    Target:实现动作的位置,也就是在哪个控件上完成动作,这里结合了XPath的内容,因此这里显示的都是xpath路径,而因为开始录制时已经设定了首页的地址,所以当前的首页地址用”/”标识,其他元素遵循xpath规定。

    Value:根据实际内容填写。

     

    在这里可以手动的增加两种页面校验:verify和assert。他们都能对显示内容,输出内等做验证,区别在于:

    Verify:验证出现问题时,脚本的执行不会停止,会在最终结束时给出提示;

    Assert:出现异常马上终止所有的脚本执行;

    这个可以结合QTP的检查点进行联想,不过selenium的检查更为灵活。

     

    2)        单一脚本回放

    在IDE中准备好基本的脚本后,确定输入内容正确无误,也做好了验证设定,可以回放当前脚本,最终IDE会给出提示通过情况和不通过情况。

    多个testcase可以设置运行不同的场景,通过java的变量等内容进行不同的用例测试;

    至此,IDE的工作已基本完成,可以进入真正的自动化测试操作。

     

    3)        调试selenium的自动化运行环境RC:

                            i.             配置java运行环境,JDK和JRE以及系统环境变量;

                          ii.             安装集成开发环境,因为选择使用java语言进行执行,所以我选择了比较实用的eclipse作为执行平台。

                         iii.             在eclipse创建一个javaproject;

    其他内容可默认,也可根据需要新建不同的目录。

     

    选中新建的project,通过属性的javaBuildPath,加载一个外部jar包,选中selenium-remote下的selenium-server.jar文件,build进project中,至此才能由eclipse驱动脚本进行测试。

     

                         iv.             把脚本放入eclipse:



     

    首先需要生成一个JUnitTestCase,推荐使用Junit3,名称要保持和IDE中的testcase一致;

     

    上图为基本脚本放入eclipse最初的状态,语法调试和基本使用完全遵循java在eclipse中的使用规范。

     

    可以根据具体情况,建立多个JUnitCase,分别针对不同内容进行测试。

     

    由于在IDE中已经对脚本进行初步的回放调试,在eclipse中就可以直接执行了。首先:启动remote组件。

    在cmd中运行java –jar\selenium-server-1.0.3,确保代理服务正常运行;

    右键选中要执行的Junitcase,执行run as的Junit test,就可以通过eclipse驱动脚本进行执行了。

     

    当脚本执行发生错误的时候,红圈部分标识发生错误的class,右键点击可以选择焦点跳转到出错的位置。

    红线部分为提示出错的内容。

    若脚本调试,环境设置都正确的时候,执行结果就会告知用户本次测试通过。

     

    四       Selenium结合eclipse的高级使用:

    Selenium的强大之处就在于可以使用集成开发环境,让用户使用自己最熟悉的开发语言进行调试操作。IDE仅是最最基本的准备,真正的自动化工作,是由java等开发语言和selenium的外部jar进行支持的。

    首先在eclipse中,引用了selenium-server.jar后,可以使用众多的class,输入“selenium.”可以自动列出所有可用的class,对于输入一半的命令,可以通过“alt+\”进行补全操作。

    1)        把用例放到脚本中执行:

    类似于QTP的参数化,只不过这里使用的是生成变量的办法,将需要替换的内容创建变量,统一由变量进行修改,当然结合数组进行一定的循环,可以达到更好的效果。然后根据验证的内容,选择对检查内容使用verify验证或assert验证,达到最终执行用例的效果。

    2)        对数据库的检查:

    QTP中的数据库检查点原理,就是通过执行指定位置的查询,然后设置搜索结果的过滤条件,判断是否通过。使用selenium,则直接使用java的数据库连接语句和查询语句进行操作,同样在查询条件上加verify或assert验证。

    3)        ERP等专门针对流程的项目测试:

    通过实际的使用经验发现,当使用QTP进行流程类操作,需要引用大量变量的时候,非常容易引起工具的崩溃,当选择selenium的时候,可以非常好的避免这种情况的发生。因为selenium是真正的通过编写代码实现驱动的测试工具,而且所有的变量直接写在语句中,所以当出现流程测试的时候,可以将不同的步骤和场景分别写在不同的class里,变量声明为public的形式,方便任何包中的class调用。

     

    五       Selenium的扩展使用:

    1)        对象识别的基础:xpath

    XPath 类似档案系统的路径命名方式,“/”标识根目录,@标记标识该元素的属性,完整的一个xpath语句标识一个指定的元素,在每一个页面上标记该页面的特有元素。

    例如:

    /html/body/div[@id='main']/div[@id='header']/div[@id='topNav']/div[@id='channel']/ul/li[2]/a/span

    从左到右,从大到小的范围,确定这个元素最终是一个span标签,而它必然是在前面一层一层的过滤限定之下的,也就是说在当前这个页面上(根是10.0.0.116),必然存在且唯一存在一个元素可由上面的xpath语句进行识别。

    Xpath可以手动在eclipse里进行编写,也可以在IDE中进行先期编写,最简单的办法是通过firefox的相关插件,直接获取到某个元素的xpath值,再根据比较,在代码中替换变量,通过循环或其他办法增加代码的自动化执行效果。

     

    2)        从构建版本到发送测试报告的一路自动化:selenium+ant

    这里主要使用的是ant的版本构建功能,这部分更多的利用的是ant的功能,因此不在此文中进行描述,也是自身继续提高的下一个目标。

    展开全文
  • 自动化测试工具Selenium入门

    万次阅读 2017-11-22 20:40:46
    自动化测试工具Selenium入门自动化测试工具Selenium入门 简介 入门 环境搭建 代码实现 一些坑简介 写过爬虫的朋友一定遇到过这样一个问题:网页的部分内容是由js(ajax)技术生成的,而这部分内容恰恰是我们想要...

    简介

    写过爬虫的朋友一定遇到过这样一个问题:网页的部分内容是由js(ajax)技术生成的,而这部分内容恰恰是我们想要的,并且这个ajax请求的url或者生成的cookie信息我们很难拿到。
    普通的爬虫工具例如HttpClient只能模拟http发送请求,我们无法拿到url或者cookie,所以当然也无法拿到动态网页内容;htmlunit具有js渲染的功能,某些场景下使用htmlunit是一个比较合适的选择,但是 htmlunit对于某些复杂js却显得无能为力,关于htmlunit的使用,我们会在另外一篇博客中详细叙述。
    Selenium,作为一个Web应用程序测试的工具,功能显然更加强大。Selenium的核心Selenium Core基于JsUnit,完全由 JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。显然,Selenium非常适合解决上述我们提到的动态网页加载问题。
    这里我们主要讲一下Selenium如何在java平台上使用、以及一些使用过程中出现的坑。

    入门

    环境搭建

    1. 首先我们要准备一些jar包,里面有一些api可供我们使用,具体如下:

      commons-codec-1.9.jar
      commons-collections-3.2.1.jar
      commons-exec-1.1.jar
      commons-io-2.4.jar
      commons-lang3-3.3.2.jar
      commons-logging-1.1.3.jar
      cssparser-0.9.14.jar
      guava-15.0.jar
      httpclient-4.3.4.jar
      httpcore-4.3.2.jar
      httpmime-4.3.3.jar
      jna-3.4.0.jar
      phantomjsdriver-1.2.0.jar
      selenium-api-2.41.0.jar
      selenium-chrome-driver-2.44.0.jar
      selenium-firefox-driver-2.44.0.jar
      selenium-htmlunit-driver-2.44.0.jar
      selenium-ie-driver-2.44.0.jar
      selenium-java-2.44.0.jar
      selenium-remote-driver-2.41.0.jar
      selenium-safari-driver-2.44.0.jar
      selenium-support-2.44.0.jar
      

    其中版本是我自己选取,若要使用其他版本,大家可以自己尝试哦。
    2. 由于Selenium可以操作各种浏览器进行测试,所以在使用之前我们需要在电脑上安装对应的浏览器。注意,Selenium版本与浏览器版本不一定兼容,以下是FireFox和Chrome具体对应版本:
    FireFox:

    	2.25.0   ->  18
    	2.30.0   ->  19
    	2.31.0   ->  20
    	2.42.2   ->  29
    	2.44.0   ->  33 (不支持31)
    	2.53.0   ->  43,46(不支持47)
    	2.41.0   ->  26(绿色版本)
    	2.44     ->  32.0-35.0
    	2.53.0-2.53.6 ->  40.0.3
    

    Chrome:

    	2.29  ->  56-58
    	2.28  ->  55-57
    	2.27  ->  54-56
    	2.26  ->  53-55
    	2.25  ->  53-55
    	2.24  ->  52-54
    	2.23  ->  51-53
    	2.22  ->  49-52
    	2.21  ->  46-50
    	2.20  ->  43-48
    	2.19  ->  43-47
    	2.18  ->  43-46
    	2.17  ->  42-43
    	2.13  ->  42-45
    	2.15  ->  40-43
    	2.14  ->  39-42
    	2.13  ->  38-41
    	2.12  ->  36-40
    	2.11  ->  36-40
    	2.10  ->  33-36
    	2.9  ->  31-34
    	2.8  ->  30-33
    	2.7  ->  30-33
    	2.6  ->  29-32
    	2.5  ->  29-32
    	2.4  ->  29-32
    
    1. java环境搭建部分此处略过。打开Eclipse,新建Java Project,取名selenium_demo,然后将下载的jar包导入工程。至此,环境搭建完毕。

    代码实现

    1. 使用Selenium新建一个浏览器(这里以火狐浏览器为例,我这里是mac操作系统):

      String browserPath = "/Applications/Firefox.app/Contents/MacOS/firefox";
      System.setProperty("webdriver.firefox.bin", browserPath);
      WebDriver driver = new FirefoxDriver();
      

    其中browserPath是火狐浏览器的驱动路径。如果要新建一个PhantomJs浏览器,则代码如下:

    	String browserPath = "/opt/app/PhantomJS/phantomjs-2.1.1-linux-x86_64/bin/phantomjs";
    	System.setProperty("phantomjs.binary.path", browserPath);
    	WebDriver driver = new PhantomJSDriver();
    
    1. 为Selenium设置代理:
      FireFox:

      String proxyIp = "10.10.10.1";
      int proxyPort = 80;
      FirefoxProfile profile = new FirefoxProfile();
      profile.setPreference("network.proxy.type", 1);
      profile.setPreference("network.proxy.http", proxyIp);
      profile.setPreference("network.proxy.http_port", proxyPort);
      profile.setPreference("network.proxy.ssl", proxyIp);
      profile.setPreference("network.proxy.ssl_port", proxyPort);
      WebDriver driver = new FirefoxDriver(profile);
      

    PhantomJs:

    	DesiredCapabilities desiredCapabilities = DesiredCapabilities.phantomjs();
    	Proxy proxy = new Proxy();
    	proxy.setProxyType(org.openqa.selenium.Proxy.ProxyType.MANUAL);
    	proxy.setAutodetect(false);
    	String proxyIp = "10.10.10.1";
    	int proxyPort = 80;
    	proxy.setHttpProxy(proxyIp + ":" + proxyPort);
    	desiredCapabilities.setCapability(CapabilityType.PROXY, proxy);
    	WebDriver driver = new PhantomJSDriver(desiredCapabilities);
    
    1. 打开一个url并获取对应的网页源码:

      String url = "http://www.baidu.com";
      driver.get(url);
      String pageSource = driver.getPageSource();
      System.out.println(pageSource);
      
    2. 浏览器窗口最大化:

      driver.manage().window().maximize();
      
    3. 定位某个元素:

      根据ID定位元素:
      WebElement ele = driver.findElement(By.id("id"));
      根据Class定位元素:
      WebElement ele = driver.findElement(By.className("className"));
      根据xpath定位元素:
      WebElement ele = driver.findElement(By.xpath("xpath"));
      
    4. 向表单填数据:

      WebElement ele = driver.findElement(By.id("id"));
      ele.clear();
      ele.sendKeys("str");
      
    5. 触发元素的点击事件:

      WebElement ele = driver.findElement(By.id("id"));
      ele.click();
      

    一些坑

    1. 使用find_element_by_xxxx()方法查找元素时,如果元素找不到,不会返回null,而是抛出异常,所以需要自己捕获异常。
    2. 使用firefox后,很多选项虽然在浏览器中进行了设置,但是通过selenium启动firefox后,设置并没有生效,所以这些设置你需要在代码中添加。
    3. 使用WebDriver点击Button元素时,如果Button元素其他元素遮住了,或没出现在界面中(比如Button在页面底部,但是屏幕只能显示页面上半部分),使用Click()方法可能无法触发Click事件。
    展开全文
  • Python自动化测试Selenium

    万人学习 2019-08-07 15:57:44
    本课程详细介绍了Selenium Python版本的自动化测试方法和实践,通过本课程的学习你将掌握如下内容:Selenium 测试环境搭建单元测试、生成测试报告、定位元素、WebDriver属性和方法、WebElement属性和方法、操作form...
  • 软件测试:自动化测试工具selenium

    多人点赞 2021-04-18 16:29:54
    自动化测试工具selenium自动化测试selenium工具特点版本Webdriver常用的API元素的定位 自动化测试   自动化测试是指软件测试的自动化,再预设的状态下运行应用程序或者系统,预设条件下包括正常和异常,最后评估...

    自动化测试

      自动化测试是指软件测试的自动化,再预设的状态下运行应用程序或者系统,预设条件下包括正常和异常,最后评估运行结果,将认为驱动的测试行为转化为机器执行的过程。

    • 常见的自动化测试工具有:QTP、selenium、Rational Robot、jmeter、appium、Loadrunner等等。

    我们经常使用selenium工具帮助我们完成自动测试,相比起其他工具,它有着不少的优势。这篇博客总结了selenium工具使用相关的一些知识,一起来看看吧~

    selenium工具

    特点

    • 是一款轻量级、免费的工具;
    • 它支持多平台:Windows、Mac、Linux;
    • 它支持多浏览器:Chorme、IE edge、Firefox;
    • 支持分布式测试用例的执行,可以将测试用例分布到不同的测试机器中执行;
    • 支持多语言,这对于测试人员是非常有利的,不论更加熟悉什么语言,都可以通过selenium来进行实现。

    版本

    • selenium1.0:selenium IDE,selenium RC,selenium grid;
    • selenium2.0:Webdriver;
    • selenium3.0:增加了一些浏览器的原生驱动,Firefox edge;

    我们使用selenium工具一般会进行录制脚本或者自己去编写需要的脚本让它完成自动化的测试

    Webdriver常用的API

    这里我们先来了解一下脚本到底长什么样子:

    from selenium import webdriver 
    import time
    browser = webdriver.Firefox()
    time.sleep(3)
    broswer.get("http://www.baidu.com")
    time.sleep(3)
    broswer.find_element_by_id("kw").send_keys("selenium")
    time.sleep(3)
    broswer.find_element_by_id("su").click()
    broswer.quit()
    
    • 首先,如果想要使用selenium的webdriver里的函数,需要先将包导入

    from selenium import webdriver

    • 指定需要操控的浏览器

    browser = webdriver.Firefox()

    • 进行定位

    broswer.find_element_by_id(“kw”).send_keys(“selenium”)

    • 我们在进行搜索时输入要搜索的内容紧接着就要点击按钮才能完成查询跳转到查询的界面

    broswer.find_element_by_id(“su”).click()

    • 关闭

    broswer.quit() //退出并关闭窗口的每一个相关的驱动程序
    broswer.close() //关闭当前窗口

    quit不仅可以关闭窗口,还可以更好的释放资源

    元素的定位

    在我们进行自动化测试时,对象的定位是我们操作的核心,因为我们要想识别一个对象,就应该识别该对象。我们可以通过对象的属性找到该对象。
    注意:不论我们采用哪种方式进行元素的定位,都必须保证属性是存在且唯一的。
    我们常用的方法有:

    • id
    • name
    • class name
    • link text
    • partial link text
    • targe name
    • xpath
    • css selector
      在这里插入图片描述
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    #最大化浏览器
    driver.maximize_window()
    time.sleep(6)
    #1 用id来进行定位
    driver.find_element_by_id("kw").send_keys("张杰")
    driver.find_element_by_id("su").click()
    
    #2  用name来进行定位
    driver.find_element_by_name("wd").send_keys(u"张杰")
    driver.find_element_by_id("su").click()
    
    #3  用 class name来进行定位
    driver.find_element_by_class_name("bg s_ipt_wr quickdelete-wrap").send_keys("张杰")
    driver.find_element_by_class_name("bg s_btn btn_h btnhover").click()
    
    #4  用tag name 来进行定位(input 太多了不能定位到)
    driver.find_element_by_tag_name("input").send_keys("张杰")
    driver.find_element_by_id("su").click()
    
    #5 Link text
    driver.find_element_by_link_text("视频").click()
    
    #6   partial link text 链接的一部分
    driver.find_element_by_partial_link_text("视") .click()
    
    #6   Xpath定位
    driver.find_element_by_xpath("//*[@id='kw']").send_keys("张杰")
    driver.find_element_by_xpath("//*[@id='su']").click()
    
    #7   CSS selector定位
    driver.find_elements_by_css_selector("#kw").send_keys("张杰")
    driver.find_elements_by_css_selector("#su").click
    
    time.sleep(6)
    driver.quit()
    

    操作测试对象

    在我们完成对元素的定位操作后,还需要对元素进行操作,是鼠标点击还是进行键盘输入,要取决于定位的是按钮还是输入框。
    我们一般常用的操作方法有如下几个:

    • click:点击对象
    • send_keys:在对象上模拟按键输入
    • clear:清除对象的内容
    • submit:提交查询内容
    • text:用于获取元素的文本信息
    #清除搜索内容“张杰”
    driver.find_element_by_name("wd").clear()
    
    #重新搜索"毛不易"
    driver.find_element_by_name("wd").send_keys(u"毛不易")
    
    #提交查询内容
    driver.find_elment_by_id("su").submit()
    
    #输出信息
    text = driver.find_element_by_id("bottom_layer").text
    print("text = "+text)
    
    

    输出结果会直接显示出

    在这里插入图片描述

    添加等待

    • 固定等待

    time.sleep()

    使用场景:如果必须要等待固定的秒数,就用固定等待

    • 智能等待

    implicity_wait()

    使用场景:需要等待下一个元素加载出来就会立马执行相应的操作;

    我们怎样去区分这两种等待呢?
    小明和小红约定好了一起去看电影,到了规定的时间,可是小红还没到,小明就会再一个地方固定等待一段时间(假设等待10min),
    那么固定等待就是小明一定会在规定的地方等待小红10min,不管是小红在第5分钟还是第9分钟到达,小明还是会等待10min;(相当于一个设定的程序,必须完成规定的事情)
    智能等待就是,当小红提前到了,小明就和小红直接去看电影了不会继续等待,如果等待了10分钟小红还没有到,那么就会抛出异常;

    打印信息

    from selenium import webdriver
    import time
    
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    #打印title
    driver.maximize_window()
    driver.find_element_by_id("kw").send_keys("隐秘的角落")
    driver.find_element_by_id("su").submit()
    time.sleep(5)
    title = driver.title;
    print("title = "+title)
    
    #打印当前的URL
    url = driver.current_url
    print("url = "+url)
    
    
    time.sleep(6)
    driver.quit()
    
    

    在这里插入图片描述

    对浏览器的操作

    • 放大
    • 缩小
    • 设置浏览器的宽和高
    • 设置前进和后退
    • 控制浏览器的滚动条
    from selenium import webdriver
    import time
    
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    driver.find_element_by_id("kw").send_keys(u"张杰")
    driver.find_element_by_id("su").click()
    
    #浏览器的最大化
    driver.maximize_window()
    time.sleep(3)
    
    #浏览器的最小化
    driver.minimize_window()
    time.sleep(3)
    
    #设置浏览器宽高
    driver.set_windows_size(400, 800)
    time.sleep(3)
    
    #浏览器的后退
    driver.back()
    time.sleep(3)
    
    #浏览器的前进
    driver.forward()
    time.sleep(3)
    
    #将浏览器的滚动条放到最底端
    js = "var q=document.documentElment.scrollTop=10000"
    driver.execute_script(js)
    time.sleep(3)
    
    #将浏览器的滚动条放到最底端
    js1 = "var q=document.documentElment.scrollTop=0"
    driver.execute_script(js1)
    
    
    time.sleep(3)
    driver.quit()
    

    键盘

    键盘按键用法
    这里以禅道的登陆页面进行测试
    使用时需要将它的包导入

    from selenium.webdriver.common.action_chains import ActionChains
    在这里插入图片描述

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains
    import os
    import time
    
    
    import os
    driver = webdriver.Chrome()
    driver.get("http://127.0.0.1:88/pro/user-login.html")
    #最大化浏览器
    driver.maximize_window()
    driver.find_element_by_id("account").send_keys("admin")
    driver.find_element_by_id("account").send_keys(Keys.TAB)
    time.sleep(6)
    driver.find_element_by_name("password").send_keys("123")
    #用ENTER键进行登录
    driver.find_element_by_name("password").send_keys(Keys.ENTER)
    
    
    time.sleep(3)
    driver.quit()
    

    键盘组合键的用法

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    driver.find_element_by_id("kw").send_keys(u"张杰")
    driver.find_element_by_id("su").click()
    #键盘组合键的用法
    #复制
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
    time.sleep(5)
    
    #剪贴
    driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
    time.sleep(5)
    
    driver.find_element_by_id("kw").send_keys("乘风破浪的姐姐2")
    driver.find_element_by_id("su").click()
    time.sleep(5)
    

    鼠标事件

    ActionChains

    • context_click() 右击
    • double_click() 双击
    • drag_and_drop() 拖动
    • move_to_element() 移动

    我们在使用这类时
    也需要将它的包导入

    from selenium.webdriver.common.action_chains import ActionChains

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    import os
    
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    driver.find_element_by_id("kw").send_keys("张杰")
    #定位“百度一下”按钮
    su1 = driver.find_element_by_id("su")
    
    #右击
    ActionChains(driver).context_click(su1).perform()
    
    #双击
    time.sleep(5)
    ActionChains(driver).double_click(su1).perform() 
    
    time.sleep(5)
    title = driver.find_element_by_id("su")
    target = driver.find_element_by_link_text("张杰_百度百科")
    
    #拖动
    ActionChains(driver).drag_and_drop(title, target).perform()
    
    #移动
    ActionChains(driver).move_to_element(target).perform()  
    time.sleep(5)
    driver.quit()
    

    定位一组元素

    inputs = driver.find_elements_by_tag_name("input")
    for input in inputs:
        if input.get_attribute("type")=="checkbox":
            input.click() 
            
    

    多层框架/窗口定位

    定位:

    • switch_to_frame()
    • switch_fo_window()
    #从默认的页面跳转到id=f2的页面
    driver.switch_to.frame("f1")
    driver.switch_to.frame("f2")
    driver.find_element_by_id("kw").send_keys(u"西雅图")
    driver.find_element_by_id("su").submit()
    time.sleep(6)
    
    #跳转到默认的页面
    driver.switch_to.default_content()
    driver.switch_to.frame("f1")
    driver.find_element_by_link_text("click").click()
    time.sleep(5)
    driver.quit()
    

    层级定位
    level_locate.html

    下拉框处理

    
    #定位一组元素
    options = driver.find_elements_by_tag_name("option")
    for option in options:
        if option.get_attribute("value")=="9.03":
            option.click()
            
    

    alter

    driver.find_elements_by_id("tooip").click()
    time.sleep(5)
    
    #得到操作句柄
    alert = driver.switch_to.alert
    #关闭alert框
    alert.accept()
    
    展开全文
  • selenium录制器是最近刚流行起来的一个ui自动化测试工具,由多测测团队开发并开源,获得谷歌力挺。 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程,自有编辑器一站式解决 基于关键字驱动框架技术...
  • 假如一个系统现在需要一款自动化测试工具,要求可以重复提交表单进行功能性测试,不用纯手工去做(因为工作量过大),现在有两个工具(Selenium和QTP),哪个比较适合,为什么
  • 一、主流自动化工具 QTP:收费、支持web和桌面软件自动化 ...答:一个web自动化测试工具,中文意思是:硒。 三、selenium特点 开源、免费 跨平台(Linux、Windows、Mac) 支持多浏览器:谷歌、火...
  • 工具:python2.7+selenium模块 实现目标:调起浏览器;打开指定的网站;调整窗口大小 selenium支持大部分的主流语言,本文用python语言实现 selenium支持大部分的主流浏览器,本文用firefox实现 实现代码如下: # ...
  • Python之自动化测试工具selenium

    千次阅读 2018-07-30 19:42:43
    selenium就是一个自动化测试工具   selenium在python中的具体作用为: 1.selenium可以完全模拟浏览器操作,并对动态数据进行获取 2.当有些数据需要登录才能获取,那么selenium只需要得到账号密码就可以代替人工...
  • 自动化测试工具Selenium(1)——简单介绍+安装篇 一、Selenium测试工具介绍: 1、介绍: 从实际使用性质上来说,Selenium是浏览器自动化测试框架,一个用于Web应用程序测试的工具。Selenium测试直接运行在...
  • 自动化测试工具selenium 之Selenium-IDE

    千次阅读 2013-10-06 18:39:29
    前言Selenium-IDE 是用来开发Selenium测试用例的工具,它是一个易于使用的Firefox插件而且是开发测试用例最有效的方法安装使用firefox,可以从以下地址安装 downloads page。点击 Download 之后, 出现点击 ...
  • 本文主要介绍selenium定位元素常用的几种方法 selenium操作浏览器步骤: 查找元素属性----通过元素属性执行相关操作 元素常见的属性: id,name,class,link_text,xpath,css,tag_name等 selenium对浏览器常用的...
  • 自动化测试-selenium IDE使用

    万次阅读 多人点赞 2018-03-19 11:08:25
    selenium IDE结合浏览器提供脚本的录制,回放以及编辑脚本功能,以及元素的定位,可以使用selenium IDE将录制的脚本生成相应的带单元测试框架的自动化测试脚本。selenium具有录制功能,可以web回放,录制的脚本可以...
  •  一、下载文件 先要去官网(http://seleniumhq.org/download/)下载必需的文件: Selenium IDE (专门用于 FireFox 测试的独立界面,可以录制测试步骤,但我更倾向于写代码做标准的功能测试)S...
  • 功能自动化测试工具selenium的安装

    千次阅读 2018-08-01 19:29:52
    Windows命令行(cmd)输入pip install selenium 即可自动安装selenium。(前提是电脑中要安装的有Anaconda)如果没有就要先下载Anaconda再按照下面的进行安装. 1.Chromedriver 下载地址: ...
  • 关于java web自动化测试工具 selenium

    千次阅读 2013-10-24 21:39:41
    QTP 不会,找了下 还真找到了类似的工具 selenium ,是做web自动化测试用的,省得需要手工操作。   selenium 官网好像被GFW 给河蟹了,老方真是阻碍中国IT 发展的打手。 记录下:   大致做法这样,先下载它的 fire...
  • 话不多说,进入正题,我就不说怎么安装selenium、怎么用webdriver了,有人要是不会可以私信我哈。不过我想,这里混的都是大佬,不会比我这种小白程序员差,我也就做个分享而已。 目录 一、导入需求的模块 二、...
  • 使用Selenium自动化测试时,如果需要设置代理访问网络时,可以参考如下代码: package com.test; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.Proxy; import org.openqa...
  • selenium自动化测试 尽管移动应用程序的市场份额有大幅增长,但网络应用程序仍然具有大量的用户基础。 在部署之前,企业正在关注Web应用程序的质量。 这是测试发挥重要作用的地方。 与某些可以自动化的功能测试不同...
  •  Selenium是一个web自动化测试框架,也支持从HTML页面上爬取javascript生成的或AJAX的内容。  selenium2支持通过各种driver(FirfoxDriver、IternetExplorerDriver、OperaDriver、ChromeDriver)驱动真实浏览器...
  • 解析自动化测试工具-Selenium&Appium

    千次阅读 2019-02-21 10:26:36
    自动化测试,利用自动化测试工具,通过录制/编程方式实现测试活动,发现被测对象存在的缺陷,从而替代手工测试活动。自动化测试不局限于某个具体测试阶段,也不局限被测对象的类型,只要满足自动化测试的必要条件...
  • 自动化测试工具- selenium介绍

    千次阅读 2017-05-25 10:51:52
    Selenium 是目前用的最广泛的Web UI 自动化测试框架。 本系列文章,将深入简出来讲解selenium 的用法文章的末尾处, 有整个系列的链接   selenium 的命名 selenium 的意思是 硒 (有点QTP 杀手的意思) QTP ...
  • 自动化测试,一个被炒的火热的词,各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员,由于工作的原因,目前所见的自动化测试在金融系统应用中较为广泛,所投入的人力物力在整个测试中也是占了...
  • 目前市面上有分门别类的自动化测试工具,这篇文章将讨论开源自动化测试工具 Selenium使用,以及围绕该工具进行自动化测试的理念、方案以及测试架构的构建。 1. 工具的使用 1.1 Selenium 介绍 Selenium是开源...
  • 自动化测试工具selenium

    千次阅读 2013-09-08 13:07:27
    这里说的 selenium 是一个自动化测试工具。 官方网址: http://docs.seleniumhq.org/ 这个站点地址看起来有点奇怪, 以docs 开始, 乍一看, 以为这是这个工具文档的地址. 其文档地址是: ...
  • 1、背景:在网页自动化测试和网页表单自动交互的场景中,对动态js页面的加载,隐藏链接爬虫和表单元素需要加载js来解析。  htmlunit相比较于htmlparser以及httpclient只能解析静态页面来说,可以支持动态js页面的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,329
精华内容 10,131
关键字:

自动化测试工具selenium的使用