自动化测试 订阅
一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。 展开全文
一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。
信息
应    用
软件测试的自动化
外文名
Test
定    义
人为驱动测试为转为机器执行过程
中文名
自动化测试
工    具
QTP
自动化测试定义
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
收起全文
精华内容
参与话题
问答
  • 最近在做一个自动化测试的项目,在asp.net MVC项目中使用 Selenium 的 ChromeDriver 来打开Chrome浏览器进行自动化操作,Controller代码如下: ``` using OpenQA.Selenium; using OpenQA.Selenium.Chrome; ...
  • Web自动化测试Selenium 学习笔记(一)

    千次阅读 多人点赞 2018-05-14 20:34:47
    1、Web自动化测试简介自动化基础:自动化用例编写、Selenium优势及原理、自动化环境搭建Selenium基础:常见8大元素定位(表格)、常见元素处理、下拉框元素处理、不同窗口切换、元素进阶、元素等待需求到框架 需求...

    1、Web自动化测试简介

    自动化基础:自动化用例编写、Selenium优势及原理、自动化环境搭建

    Selenium基础:常见8大元素定位(表格)、常见元素处理、下拉框元素处理、不同窗口切换、元素进阶、元素等待

    需求到框架

        需求分析-用例设计-基础脚本-登录/购物脚本重构-封装读取配置文件-数据驱动-监听截图-代码分层-框架实现-日志收集-报告生成-持续集成

    2、功能测试和自动化测试的区别

        什么是功能测试:

            满足需求找BUG

        什么是自动化测试:

            编写代码、脚本让程序自动运行;减少人工投入,提高工作效率;回归测试;系统监控

    3、自动化测试流程

        常见的测试流程

            分析测试需求-选择方案-制定测试计划-环境-用例准备-编码-分析结果

    4、自动化测试用例和手工测试用例的区别

        手工用例

            ID 模块 前提条件 步骤 预期结果 实际结果

        自动化测试用例 

            ID 模块 前提条件 步骤 预期结果 实际结果 

         但是二者的步骤的精度不一样 

    5、为什么要做自动化?

        减少人力成本

        完成大量重复性工作

        提高测试效率

        保证工作的一致性,增加信任度

        完成手工不能完成的工作

    6、是否适合做自动化?

        时间

        人员

        系统

        领导

    7、在什么情况下做自动化?

        单元测试?    集成测试?    接口测试?    UI测试?

    8、什么样的项目需要做自动化测试?

        需求变更慢

        周期长

        脚本可重复利用

    9、Selenium简介

        Selenium 

    10、Selenium的优势以及工作原理

        Selenium的优势:开源(完全免费)、多浏览器 、多平台、API齐全、浏览器内运行

        Selenium的工作原理

            首先它是client即脚本,脚本最开始会启动生成一个driver,然后会启动生成一个Server即浏览器,把我们的浏览器绑定在一个端口上,这个时候脚本我们就可以通过发送一些session也就是发送一些请求到Server,然后让他执行一些事情,把这个请求发送到浏览器的时候,浏览器会自动解析client发送过来的请求,解析完之后会进行相应的操作,执行完之后会根据执行的结果,把这个东西返回给我们的脚本,如果成功就响应成功了,失败就失败了,返回到客户端,就能看到一个执行结果了

    11、常见浏览器的启动

        Firefox浏览器启动(Firefox在webdriver中有自带驱动)

            import org.openqa.selenium.*;

            import org.openqa.selenium.firefox*;

            WebDriver driver;

            System.setProperty("webdriver.firefox.bin","Firefox的详细路径");  //浏览器没有装在默认路径时需要此行

            driver = new FirefoxDriver();  //实例化一个对象firefox

            String testUrl = "http://www.baidu.com";

            driver.ger(testUrl);

            driver.quit();

        chrome启动(chrome在webdriver中没有自带驱动)

     

            import org.openqa.selenium.*;

            import org.openqa.selenium.chrome*;

            WebDriver driver;

            System.setProperty("webdriver.chrome.driver","chrome的详细路径");  //浏览器没有装在默认路径时需要此行

            driver = new ChromeDriver();  //实例化一个对象

            String testUrl = "http://www.baidu.com";

            driver.ger(testUrl);

            driver.quit();

        IE启动

            import org.openqa.selenium.*;

     

            import org.openqa.selenium.InternetExplorerDriver*;

            WebDriver driver;

            System.setProperty("webdriver.ie.driver","IE的详细路径");  //浏览器没有装在默认路径时需要此行

            driver = new InternetExplorerDriver();  //实例化一个对象

            String testUrl = "http://www.baidu.com";

            driver.ger(testUrl);

            driver.quit();

    12、元素定位

        10大定位方法

            By.id     By.name     By.tagName    By.className    By.linkText    By.partialLinkText    By.xpath    By.cssSelector    表格定位    层级定位

        driver.findElement(By.id("kw")).sendKeys("selenium");

        driver.findElement(By.name("wd")).sendKeys("selenium");

        driver.findElement(By.classname("s_ipt")).sendKeys("selenium");

        driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("selenium");

        driver.findElement(By.cssSelector("#kw")).sendKeys("selenium");

        有很多元素的时候它是会取第一个

        driver.findElement(By.linkText("新闻")).click();

        driver.findElement(By.partialLinkText("新")).click();

        findElement是定位单一的一个元素的方法,定位一组方法我们需要用findElements,findElements是拿到了一个数组

        表格定位:

            String str = "第二行第一列";

            WebElement Table = driver.findElement(By.tagname("table"))

            List<WebElement> rows = Table.findElements(By.tagName("tr"));

            for(WebElement row:rows){

                List<WebElement> tds= row.findElements(By.tagName("td"));

                for(WebElement td:tds){

                    String value = td.getText();

                    if(value.equals( str)){

                        System.out.pringln(value+"\n");

                    }else{

                        System.out.pringln("error"+"\n");

                    }

                }

            }

        常见的自动化框架:关键字驱动、数据驱动、混合驱动

    13、常用API

        打开网址方式

            Driver.get()

            Driver.navigate.to()

        操作浏览器API

            Driver.navigate().refresh()  //刷新页面

            Driver.navigate().forward()  //前进

            Driver.navigate().back()  //后退

            Driver.getTitle()

            Driver.getCurrentUrl()  //获取当前URL

            Driver.manage().window().maximize() //窗口最大化

            Driver.quite()  //浏览器关闭,没有完全关闭,进程中仍占着

            Driver.close()  //浏览器关闭

            滚动条操作

            操作浏览器cookie

        输入框操作API

            SendKeys()

            Clear()

            getText()

            Click()

        选择框处理

            单选框

            复选框

            下拉框

        特殊窗口操作

            Iframe窗口处理

            弹窗处理

        JS操作

            Js定位

            Js单击元素

        页面元素处理

            等待加载

            根据属性获取元素值

            获取对象的css属性

            获取对象状态

                页面是否显示isdisplay()

                元素是否存在find_element

                元素是否选中isSelected()

                是否处于灰化状态isEnabled()

        特殊操作讲解

            报错时截屏保存

            模拟鼠标右键操作

            鼠标悬浮

            上传文件

            日期控件处理

            浏览器滚动条操作

    14、常见元素处理

        1.输入框

            sendKeys 

            clear 

            getAttribute 

        2.单选框

            click 

            clear //清楚

            isSelected //是否选中

        3.多选框

            click

            clear

            isSelected

            isEnabled //判断是否是enable状态

        4.按钮

            click 

            isEnabled //判断是否是enable状态

        5.表单

            submit

        6.上传文件

            sendKeys 

     15、下拉框--选择元素

        下拉框定位    Select list = new Select(locator);

        下拉框操作    选择对应的元素    Text Value Index 

                             不选择对应的元素    deselectAll deselectByvalue deselectByVisibleText

                             获取选择项的值    getAllSelectdOptions() getFirstSelectedOption().getText

    16、元素进阶操作

        鼠标左击:

            Actions action = new Actions(driver);

            Action.click().perform();

        鼠标右击:

     

            Actions action = new Actions(driver);

            Action.contextClick().perform();

        鼠标双击:

            Actions action = new Actions(driver);

            Action.doubleClick().perform();

        鼠标悬停:

     

            Actions action = new Actions(driver);

            Action.moveToElement().perform();

    17、特殊窗口切换

        Iframe处理

            switchTo()

        弹窗处理

            switchTo()

            getWindowHandles()

    18、3种等待的分类

        强制等待    Thread.sleep()

            如果调用就一直等下去

        显示等待    

            new WebDriverWait(driver,15).until(

                ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))

            );

            如果在规定时间内找到元素就继续操作,如果没有找到就报错

        隐式等待

            Driver.manager().timeouts.implicitlyWait(10,TimeUnit.SECONDS);

            全局的,如上10秒以内每隔多少秒去找,找到了就进行下一步

    19、自动化测试

        自动化的目的:

            减少人力成本

            完成大量重复工作

            提高测试效率

            保证工作的一致性

            完成手工不能完成的工作

    20、Maven的使用

        Maven简介

            Maven是一个项目管理工具,提供了一整套完整的构建声明周期框架

        Maven的作用

            构建、文档生成、报告、依赖

    21、重构

        重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性。

     

     

        

     

    展开全文
  • 自动化测试selenium常用方法整理

    千次阅读 2019-05-20 11:10:06
    是一个用于对web网页进行自动化测试的工具, 可以通过它提供的一些方法自动操作浏览器, 模拟手工操作。 selenium的特点 1. 它是通过驱动浏览器来进行页面登录, 或者是获取页面信息 2. 通过selenium来爬取网址的时候,...

     

    一、selenium简单介绍和使用
    是一个用于对web网页进行自动化测试的工具, 可以通过它提供的一些方法自动操作浏览器, 模拟手工操作。

    selenium的特点
    1. 它是通过驱动浏览器来进行页面登录, 或者是获取页面信息
    2. 通过selenium来爬取网址的时候, 效率比较低, 因为浏览器的打开, 请求, 渲染页面都需要一定的时间
    3. selenium提供的一些用于元素定位和查找的API都是纯Python语言实现的, 所以效率上看, 没有xml中的定位API效率高
    4. selenium是开源免费的, 支持主流的浏览器, IE, FireFox, Chrome, Opera, Safari等

    使用方法:
    1. 安装selenium: pip install selenium (第三方库)
    2. 安装浏览器驱动, 用于启动浏览器: firefox driver, chrome driver
    注意: 浏览器驱动的版本最好要和浏览器的版本相匹配, 否则会出现不能启动浏览器的错误!

    安装完成后,可在pycharm中执行以下代码测试一下:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    import time
    driver=webdriver.Firefox() #创建浏览器对象
    driver.get("http://www.baidu.com") #打开网址
    driver.find_element(By.ID,"kw").send_keys("测试") #获取页面元素,并输入内容“测试”
    driver.find_element(By.ID,"su").click() #点击
    time.sleep(10) #等待2秒
    driver.quit() #关闭浏览器

    二、浏览器操作
    主要模拟浏览器打开,关闭,刷新,获取浏览器信息,设置浏览器打开大小,位置,以及cookie相关信息。

     

    三、元素定位

    主要是查找获取元素,webdriver提供八种元素定位方法,主要通过元素属性和层级关系定位,有两套定位方法。

    第一套是使用webdriver提供的find_element_by_*的八种元素定位方法,from selenium import webdriver。

    一个是find_element_by_方式,这是定位单个元素的。一个是find_elements_by_方式,这是用来定位多个元素的。

    第二套通过统一调用find_element(By.xx,"yyy")方法,通过By声明定位方法,传入对应定位参数) 导入By类 ,from selenium.webdirver.common.by import By。

    • find_element()只会查找页面符合条件的第一个节点,并返回;但是定位不到元素则会报错。
    • find_elements()查找多个元素并且返回一个列表,列表里的元素全是WebElement节点对象;当定位不到元素时不会报错,会返回一个空列表。

     

    四、元素操作
    主要模拟鼠标--点击,移动,悬停等操作;
    键盘--输入内容,快捷键(复制,剪切,粘贴,Fn,回车等)元素方法–获取元素属性,尺寸,文本,判断元素是否可见可用,等待时长等。

     

    五、文件操作

    主要模拟文件上传和下载

     

    文章参考:

    1、虫师:Selenium 2自动化测试实战-基于python语言

    2、https://blog.csdn.net/qq_41664526/article/details/79544949

     

    展开全文
  • 自动化测试selenium中xpath的用法

    千次阅读 2017-06-07 15:08:00
    XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。 XML 实例文档 我们将在下面的例子中使用这个 XML 文档。 ...XPath 使用路径表达式在 XML

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

    XML 实例文档

    我们将在下面的例子中使用这个 XML 文档。

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <bookstore>
    
    <book>
      <title lang="eng">Harry Potter</title>
      <price>29.99</price>
    </book>
    
    <book>
      <title lang="eng">Learning XML</title>
      <price>39.95</price>
    </book>
    
    </bookstore>

    选取节点

    XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

    下面列出了最有用的路径表达式:

    表达式 描述
    nodename 选取此节点的所有子节点。
    / 从根节点选取。
    // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
    . 选取当前节点。
    .. 选取当前节点的父节点。
    @ 选取属性。

    实例

    在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

    路径表达式 结果
    bookstore 选取 bookstore 元素的所有子节点。
    /bookstore

    选取根元素 bookstore。

    注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

    bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
    //book 选取所有 book 子元素,而不管它们在文档中的位置。
    bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
    //@lang 选取名为 lang 的所有属性。

    谓语(Predicates)

    谓语用来查找某个特定的节点或者包含某个指定的值的节点。

    谓语被嵌在方括号中。

    实例

    在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

    路径表达式 结果
    /bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
    /bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
    /bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
    /bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
    //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
    //title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
    /bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
    /bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。
    //input[starts-with(@class,'test')] 选取 input 元素中所有 class 属性值以"test"开头的元素
    //input[contains(@class,'test')] 选取 input 元素中所有 class 属性值包含"test"的元素
    //button[text()='下一步'] 选取 button 元素中所有text 属性值为"下一步"的元素
    //input[@id='kw1' and @name='wd'] 选取ID 为"kw1"并且name为"wd"的元素
    //input[@id='kw1' or @name='wd'] 选取ID 为"kw1"或者name为"wd"的元素

     

    选取未知节点

    XPath 通配符可用来选取未知的 XML 元素。

    通配符 描述
    * 匹配任何元素节点。
    @* 匹配任何属性节点。
    node() 匹配任何类型的节点。

    实例

    在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

    路径表达式 结果
    /bookstore/* 选取 bookstore 元素的所有子元素。
    //* 选取文档中的所有元素。
    //title[@*] 选取所有带有属性的 title 元素。

    选取若干路径

    通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

    实例

    在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

    路径表达式 结果
    //book/title | //book/price 选取 book 元素的所有 title 和 price 元素。
    //title | //price 选取文档中的所有 title 和 price 元素。
    /bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。

        调试方法 

          Chrome按F12,在 console控制台进行Xpath的调试, 以 $x(“Xpath表达式”) 进行

                 

    展开全文
  • Selenium是基于Web的最流行的UI自动化测试工具。它提供了一组支持多种平台的公开API(例如Linux,Windows,Mac OS X等)。此外,像Google Chrome,Mozilla Firefox,Internet Explorer和Safari等所有现代浏览器都...

    问题1:Selenium是什么,流行的版本有哪些?

    Selenium是基于Web的最流行的UI自动化测试工具。它提供了一组支持多种平台的公开API(例如Linux,Windows,Mac OS X等)。此外,像Google Chrome,Mozilla Firefox,Internet Explorer和Safari等所有现代浏览器都可以用来运行Selenium测试。它也涵盖了Android平台,其中Appium是实现Selenium Webdriver界面的工具,用于移动自动化。

    值得注意的是,除了许多后来的小型版本之外,硒还有三个主要版本:

    Selenium 1.0或Selenium RC,于2004年初发布,提供了一个使用服务器与浏览器交换命令和响应的API集。

    Selenium 2.0或Selenium Webdriver,在2011年中推出,并在Selenium功能中引入了一系列重大改进。这些新的API完全取代了服务器组件,并与目标浏览器本地交互。

    Selenium 3.0,这个版本是在2016年末发布的大版本。它带来的主要变化是引入Webdriver API的W3C规范,用于浏览器自动化。也就是说,每个主要的浏览器都会有自己的Webdriver API来实现功能。

    问题2:你如何从命令行启动Selenium RC?

    // 简单的启动Selenium RC的方法是

    java -jar selenium-server.jar

    // 在浏览器中运行一套Selenese脚本

    java -jar selenium-server.jar -htmlSuite

    问题3:在我的机器端口4444不是免费的。我怎样才能使用另一个端口?

    //你可以在运行selenium服务器时指定端口为 -

    Java -jar selenium-server.jar -port 5555

    问题4:什么是Selenium Server,它与Selenium Hub有什么不同?

    Selenium Server是使用单个服务器作为测试节点的一个独立的应用程序。 Selenium hub代理一个或多个Selenium的节点实例。一个hub 和多个node被称为Selenium grid。运行SeleniumServer与在同一主机上用一个hub和单个节点创建de Selenium grid类似。

    问题5:你如何从Selenium连接到数据库?

    Selenium是一个Web UI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。在下面的例子中,我们假设正在使用Java。

    一个Connection对象表示与数据库的连接。当我们使用连接方法连接到一个数据库时,我们创建了一个连接对象,它代表了与数据库的连接。单个数据库可能有一个连接或多个连接,还可能有多个连接到不同的数据库上。

    我们可以使用Connection对象来做以下事情:

    • 创建用于执行SQL语句的Statement,PreparedStatement和CallableStatement对象。

    • 可以帮助我们提交或回滚一个JDBC事务。

    • 如果你想知道连接到的数据库或数据源信息,Connection对象通过使用DatabaseMetaData就可以收集有关数据库或数据源的信息。

    • 可以帮助我们关闭数据源。Connection.isClosed() 方法只有在调用了Connection.close()时才返回true 。此方法用于关闭所有连接。

    首先我们需要通过使用DriverManager.getConnection()方法,建立与数据库的连接。这个方法接受一个包含URL的字符串。DriverManager类尝试查找可以连接到由字符串URL表示的数据库的驱动程序。每当调用getConnection()方法时,DriverManager类都会检查可以连接到URL中指定的数据库的所有已注册的Driver类的列表。

    句法:

    String url = "jdbc: odbc: makeConnection";

    Connection con = DriverManager.getConnection(url, "userID", "password");

    问题6:Selenium RC中定位器方法有哪些?

    1. ID

    2. Name

    3. CSS (Cascade Stylesheet)

    4. XPATH (Relative XPath and Absolute XPath)

    5. Dom

    问题7:你如何验证多个页面上存在的一个对象?

    可以使用下面的Selenium命令来检查:

    assertTrue(selenium.isElementPresent(locator));

    问题8:XPath中使用单斜杠和双斜杠有什么区别?

    • 如果XPath是从文档节点开始,它将允许创建“绝对”路径表达式。

    例如 “/ html / body / p”匹配所有的段落元素。

    • 如果XPath在文档中的任意位置开始进行选择匹配,那么它将允许创建“相对”路径表达式。

    例如 “// p”匹配所有的段落元素。

    问题9:如何编写Selenium IDE / RC的用户扩展?

    用户扩展(UX)存储在Selenium IDE或Selenium RC用来激活扩展的单独文件中。它包含用JavaScript编写的函数定义。

    因为Selenium的核心是用JavaScript开发的,所以要符合原语言的标准规则来创建扩展。要创建一个扩展,我们必须用下面的设计格式来编写函数。

    // 样例

    Selenium.prototype.doFunctionName = function(){

    }

    函数名称前面的“do”告诉Selenium这个函数可以被调用为一个步骤命令,而不是作为内部函数或私有函数被调用。

    问题10:如何在页面加载成功后验证元素的存在?

    它可以通过下面的代码行来实现。

    只需一点时间(以秒为单位)来检查元素,如下所示:

    public void waitForElementPresent(String element, int timeout) throws Exception {

    for (int second = 0;; second++) {

    if (second >= timeout)

    fail("Timeout. Unable to find the Specified element" + element);

    try {

    if (selenium.isElementPresent(element))

    break;

    } catch (Exception e) {

    }

    Thread.sleep(1000);

    }

    }

    问题11:你对Selenium Grid有什么了解?它提供了什么功能?

    Selenium Grid是一款利用现有计算基础架构大幅加速Web应用程序功能测试的工具。允许测试者轻松地在多台机器上并行运行多个测试,并且可以在异构环境中运行。

    基于优秀的Selenium Web测试工具,Selenium Grid允许测试者并行运行多个Selenium Remote Control实例。更好的是,它集成显示所有Selenium远程控制,所以不必担心实际的基础设施。Selenium Grid将运行Selenium测试套件所需的时间,缩短到Selenium实例的单个实例运行时间的一小点。

    问题12:如何从你的Java Class启动Selenium服务器?

    try {

    seleniumServer = new SeleniumServer();

    seleniumServer.start();

    } catch (Exception e) {

    e.printStackTrace();

    }

    问题13:Selenium中有哪些验证点?

    Selenium主要有三种验证点 -

    • 检查页面标题

    • 检查某些文字

    • 检查某些元素(文本框,下拉菜单,表等)

    问题14:什么是XPath?什么时候应该在Selenium中使用XPath?

    XPath是一种在HTML / XML文档中定位的方法,可用于识别网页中的元素。如果没有与页面上的元素相关联的名称/ ID,或者名称/ ID的一部分是常量,则必须使用XPath。

    绝对路径用 - / 单斜杠

    相对路径用 - // 双斜杠

    ID,类,名称也可以用于XPath :

    • //input[@name=’q’]

    • //input[@id=’lst-ib’]

    • //input[@class=’ lst’]

    如果id / name / class的一部分是常量 :

    • //input[contains(@id,’lst-ib’)

    问题15:什么是Selenium的CSS定位器策略?用例子来解释。

    CSS位置策略可以与Selenium一起使用来定位元素,它使用CSS定位方法,其中 -

    绝对路径用 - (空格符号)

    相对路径用 - >表示

    ID,类,名称也可以用于XPath:

    • css=input[name=’q’]

    • css=input[id=’lst-ib’] or input#lst-ib

    • css=input[class=’lst’] or input.lst

    如果id / name / class只有一部分是常量:

    • css=input[id*=’lst-ib’)]

    使用内部文本的元素位置策略:

    • css = a:contains(‘log out’)

    问题16:当有很多定位器时,如ID、名称、XPath、CSS定位器,我应该使用哪一个?

    如果有唯一的名称或标识符可用,那么应该使用它们来代替XPath和CSS定位器。如果没有,那么CSS定位器应该被优先考虑,因为在大多数现代浏览器中,它们的评估速度比XPath更快。

    问题17:在硒中处理多个弹出窗口的机制是什么?

    可以使用命令getWindowHandles()来处理多个弹出窗口。

    然后将所有窗口名称存储到Set变量中并将其转换为数组。

    接下来,通过使用数组索引,导航到特定的窗口。

    driver.switchTo().window(ArrayIndex);

    问题18:你如何处理使用Selenium的Ajax控件?

    来看一个例子。假如一个文本框是一个Ajax控件,当我们输入一些文本时,它会显示自动建议的值。

    处理这样的控件,需要在文本框中输入值之后,捕获字符串中的所有建议值;然后,分割字符串,取值就好了。


    Part2. WebDriver相关面试问题和答案

    问题19:Selenium Webdriver优于Selenium RC的优点是什么?

    Selenium RC的架构相当复杂,WebDriver的架构比Selenium RC简单些。

    • Selenium RC比较慢,因为它使用了另外一个名为Selenium Core的JavaScript程序。相反,WebDriver比Selenium RC更快,因为它直接与浏览器对话,并使用浏览器自己的引擎来进行控制。

    • 像其他JavaScript代码一样,Selenium Core可以访问禁用的元素。Webdriver以更现实的方式与页面元素进行交互。

    • Selenium RC的API集已经有所改进,但是仍有经常让人困惑的冗余部分。WebDriver API更简单,不包含任何冗余或混淆的命令。

    • Selenium RC无法支持无头HtmlUnit浏览器。它需要一个真正的、可见的浏览器来操作。Web Driver可以支持无头HtmlUnit浏览器。

    • Selenium RC内置了测试结果生成器,并自动生成测试结果的HTML文件。Web驱动程序没有自动生成测试结果文件的内置命令。

    问题20:“GET”和“NAVIGATE”方法的主要区别是什么?

    Get方法能获得一个页面进行加载、或获取页面源代码、或获取文本,就这三。而Navigate将通过刷新,回退,前进的方式导航。

    例如 -如果我们想要前进,并做一些功能,并返回到主页。

    这可以通过调用< navigate()>方法来实现。

    driver.get() 方法会等到整个页面被加载后才可以,而driver.navigate()只是重定向到该网页,并不会等待。

    问题21:隐式等待与显式等待有什么不同?

    隐式等待是设置的全局等待,分为1、页面加载超时等待 ;2、页面元素加载超时;3、异步脚本超时。如果是页面元素超时,设置等待时间,是对页面中的所有元素设置加载时间。隐式等待是其实可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

    显式等待只是用于特定搜索的一个计时器。它的可扩展性更强,你可以设置它来等待任何条件。通常情况下,可以使用一些预先构建的条件来等待元素变得可点击,可见,不可见等,或者只是编写适合需求的条件。

    问题22:你将如何处理Selenium WebDriver中的警报/弹出窗口?

    有两种类型的警报通常被引用。

    • 基于Windows的警报弹出窗口

    • 基于Web的警报弹出窗口

    基于Web的警报弹出窗口。

    1. WebDriver为用户提供了一种使用Alert界面处理这些弹出窗口的非常有效的方法。

    2. void dismiss() - 一旦出现弹出窗口,dismiss()方法就会点击“Cancel”按钮。

    3. void accept() - 只要弹出窗口出现,accept()方法就会点击“Ok”按钮。

    4. String getText() - getText()方法返回警告框中显示的文本。

    5. void sendKeys(String stringToSend) - sendKeys()方法将指定的字符串模式输入到警告框中。

    基于Windows的警报弹出窗口。

    处理基于windows的弹出窗口总是有点棘手,因为我们知道Selenium是一个自动化测试工具,它只支持Web应用程序测试,也就是说,它不支持基于Windows的应用程序,窗口警报就是其中之一。

    1. Robot class是基于Java的实用程序,它模拟键盘和鼠标操作,并可以有效地用于处理基于windows的弹出与键盘事件的帮助。

    2. KeyPress和KkeyRelease方法可以分别模拟用户按下和释放键盘上某个键的操作。

    问题23:如何使用Selenium WebDriver截图?

    问题24:如何在WebDriver/如何管理HTTPS中的安全连接错误中解决Firefox中的SSL证书问题?

    问题25:如何解决IE中的SSL认证问题?

    // 打开浏览器后添加下面的命令

    driver.navigate().to(“javascript:document.getElementById(‘overridelink’).click()”);

    问题26:Selenium WebDriver中的可用定位器是什么?

    1. ID,

    2. Name,名称

    3. CSS,

    4. XPath,

    5. Class name,

    6. TagName,

    7. LinkText, 链接文本

    8. Partial Link Text.部分链接文本

    问题27:如何处理WebDriver中的AJAX控件?

    AJAX代表异步JavaScript和XML。它不依赖于创建有效的XML所需的打开和关闭标签的额外开销。大部分时间WebDriver自动处理Ajax控件和调用。如果不能处理的话,可以按照下面的方式来处理。

    //Waiting for Ajax Control

    WebElement AjaxElement = (new WebDriverWait(driver,

    10)).until(ExpectedConditions.presenceOfElementLocated(By.("")));

    问题28:如何在标题菜单的子菜单项上执行鼠标移动操作?

    应该首先移动菜单标题,然后移至弹出菜单项并单击它。不要忘记在最后调用actions.perform() 。以下是一些示例Java代码:



    Part3. 一般框架面试问题和答案


    问题29:大致分类和比较TDD/BDD和DDD框架?

    你可能听说过所有的这些缩写词。在这里会简要地解释它们,以及它们在系统测试生命周期中如何发挥作用的。

    TDD - 测试驱动开发。

    也被称为测试驱动设计,是一个软件开发的方法,在源代码上重复进行单元测试。写测试、看它失败、然后重构。这个概念是,先编写测试,然后来检查我们写的代码是否正常工作。每次测试后,重构完成,然后再次执行相同或类似的测试。该过程需要重复多次,直到每个单元在功能上按预期工作。TDD是由XP引入的。

    BDD - 行为驱动开发。

    行为驱动的开发将TDD的一般技术和原理与领域驱动设计的思想相结合。其目的是帮助人们设计系统(即开发人员)确定合适的测试来编写测试 - 即反映利益相关者所期望行为的测试。

    DDD域驱动的开发。

    DDD将业务领域概念映射到软件工件中。DDD框架提供以下好处:

    • 帮助团队在业务和IT利益相关者之间建立一个共同的模型

    • 该模型是模块化的,可扩展的,易于维护,该设计反映了一种商业模式。

    • 它提高了业务领域对象的可重用性和可测试性。

    问题30:什么是数据驱动框架?它与关键字驱动框架有什么不同?

    数据驱动框架。

    在这个框架中,测试用例逻辑驻留在测试脚本中。测试数据被分离并保存在测试脚本之外。测试数据是从外部文件(Excel文件)中读取的,并被加载到测试脚本中的变量中。变量用于输入值和验证值。

    关键字驱动。

    关键字/表驱动框架需要开发数据表和关键字。它们独立于执行它们的测试自动化工具。可以使用或不使用应用程序来设计测试。在关键字驱动的测试中,被测试的应用程序的功能记录在一个表格中,以及每个测试的分步说明。

    问题31:解释使用TestNG而不是JUnit框架的好处?

    TestNG相较于Junit的优势:

    1. 在JUnit中,我们必须声明@BeforeClass和@AfterClass,这是JUnit中的一个约束,而在TestNG中没有像这样的约束。

    2. TestNG提供了更多的setUp / tearDown级别。1.@ Before/AfterSuite 2.@Before/AfterTest 3.@Before/AfterGroup

    3. TestNG中不需要扩展任何类。

    4. TestNG中没有方法名称约束,就像JUnit一样。

    5. 在TestNG中,我们可以告诉测试一个方法依赖于另一个方法,而在JUnit中这是不可能的。

    6. 测试用例的分组在TestNG中可用,而JUnit中则不可用。执行可以基于组完成。例如,如果你已经定义了许多案例,并通过将2个组分别定义为“离职“与”回归”隔离。如果你只是想执行“理智”的情况,那就告诉TestNG执行“理智”。TestNG将自动执行属于“离职”组的案例。

    7. 另外,TestNG支持并行测试用例执行。

    问题32:与@Test注释相关的TestNG参数的目的是什么?

    在TestNG中,参数是修改注释功能的关键字。

    问题33:可以使用TestNG运行一组测试用例吗?

    是的,TestNG框架支持在测试组的帮助下执行多个测试用例。

    它提供了以下选项来运行特定组中的测试用例。

    如果想基于回归测试或冒烟测试等其中一个组来执行测试用例,那么:

    @Test(groups = {“regression-tests”, “smoke-tests”})

    问题34:WebDriver哪个实现是最快的,为什么?

    WebDriver的最快的实现是 HTMLUnitDriver

    原因是HTMLUnitDriver不会在浏览器中执行测试。相反,它使用简单的HTTP请求 - 响应机制来运行测试用例。

    这种方法比需要启动浏览器来测试执行的方式要快得多。

    问题35:是否可以在Selenium 2.0中使用Selenium RC API?

    是的,可以用Selenium 2.0来模拟Selenium 1.0 API(即RC)。但并不是所有的Selenium 1.0方法都支持。

    为了达到这个目的,需要从WebDriver获取Selenium实例并使用Selenium方法。

    在Selenium 2.0中模拟Selenium 1.0时,方法执行速度也可能会变慢。

    问题36:可以在Java,Dot Net或Ruby中使用Selenium Grid吗?

    • 使用Java,可以利用TestNG的并行测试功能来驱动Selenium Grid测试。

    • 使用.Net,可以使用“Gallio”并行执行测试。

    • 使用Ruby,可以使用“DeepTest”来分发测试。


    展开全文
  • 一、自动化测试的概念及意义: 1.什么是自动化测试: 一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。 2.意义: 让测试更有效率,利用更...
  • 在使用selenium-java 2.41.0与fireFox3.0编写自动化案例时会出现错误;实验后可以通过selenium-java 2.41.0 与firefox4.0可以解决如下问题。 部分代码如下: System.setProperty("webdriver.firefox.bin", ...
  • Python自动化测试Selenium

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

    万次阅读 多人点赞 2018-01-13 21:19:08
    一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。 Selenium 2,又名 ...
  • 4、Jenkins 构建自动化平台、Jenkins 安装以及功能介绍、jenkins+ant+jmeter **整合,邮件服务通知设置。 5、本课程注重实践每一个知识点都有相对应的实例,本书覆盖的实例多达上百个,提高学员的动手...
  • 自动化测试工具Selenium入门

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

    千次阅读 2013-10-06 18:39:29
    前言Selenium-IDE 是用来开发Selenium测试用例的工具,它是一个易于使用的Firefox插件而且是开发测试用例最有效的方法安装使用firefox,可以从以下地址安装 downloads page。点击 Download 之后, 出现点击 ...
  • 全栈工程师开发手册 (作者:栾鹏) python教程全解 ...Selenium IDE(如果用Firefox) FireBug、FirePath(如果用Firefox) chromedriver、IEDriverServer、phantomjs.exe IDE(Pycharm/Subl...
  • 软件测试_自动化测试

    千次阅读 2019-11-19 13:39:29
    自动化测试 什么是自动化测试 通过测试工具来执行测试用例,完成测试工作。 自动化测试与测试自动化 自动化测试 测试自动化 焦点集中在测试执行,主要由测试工具自动地完成测试 一切由计算机系统自动完成...
  • Python selenium —— selenium自动化测试成神之路

    万次阅读 多人点赞 2016-09-17 00:33:04
    很多都是明显的语法问题,一问方知,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。每当看到这样的同学,总是很想吐槽。今天博主也不是想要吐槽,只
  • Python自动化测试框架

    千次阅读 2019-10-27 14:02:15
    什么是工具——工具(Tools)类似框架,只是工具屏蔽了底层的代码,提供单独的操作界面,以此供用户操作,比如:Selenium IDE、Postman、QTP、Jmeter、LoadRunner等自动化测试工具。 什么是库——库(Library)是将...
  • 自动化测试,一个被炒的火热的词,各大公司都在嚷嚷着要上自动化测试的项目,都在招聘各种自动化测试人员,由于工作的原因,目前所见的自动化测试在金融系统应用中较为广泛,所投入的人力物力在整个测试中也是占了...
  • 自动化测试工具之 selenium

    千次阅读 2013-09-08 13:07:27
    这里说的 selenium 是一个自动化测试的工具。 官方网址: http://docs.seleniumhq.org/ 这个站点地址看起来有点奇怪, 以docs 开始, 乍一看, 以为这是这个工具文档的地址. 其文档地址是: ...
  • Web自动化测试工具选择

    千次阅读 2019-09-23 10:13:29
    目标 1. 了解Web自动化测试常用工具 2. 熟悉Selenium的特点 1. 主流的Web自动化测试工具 ...Selenium是一个开源的web自动化测试工具,免费,主要做功能测试。 3. Robotframework RobotFramework是一...
  • 测试工程 1. 测试需求:访问百度主页,搜索某个关键词,并验证搜索结果页面的标题。 2. 手工操作验证步骤: 1. 打开 Chrome 浏览器,输入百度的网址“www.baidu.com"; 2. 在搜索输入框中输入关键词“VS ...
  • 你是否渴望学习selenium webdriver + Java以及最新的框架和技术进行web自动化测试? 你是否感兴趣学习Selenium如何用在你现有的项目里的? 这门课带你从Selenium搭建环境开始讲起,然后学习selenium...
  • 自动化测试框架Selenium 入门

    万次阅读 2014-01-29 14:35:39
    什么是selenium selenium是ThoughtWork的一款开源测试框架。 下载selenium2.0lib包,点击http://code.google.com/p/selenium/downloads/list ...自动化测试工具有很多了,QTP作为商业软件功能强大。
  • Web测试自动化Selenium组件

    千次阅读 2017-05-27 11:23:10
    Web测试自动化的Selenium组件 ...现在,Selenium显然是对网站进行自动化测试的最佳选择。它逐渐流行起来,成为测试人员的基准工具,以及对Web应用程序的功能测试自动化的组织。不仅测试工程师,而且开发人
  • 假如一个系统现在需要一款自动化测试工具,要求可以重复提交表单进行功能性测试,不用纯手工去做(因为工作量过大),现在有两个工具(Selenium和QTP),哪个比较适合,为什么
  • Python自动化测试-Selenium

    千次阅读 2016-12-22 12:54:28
    Selenium自动化测试 – 启动浏览器第一个selenium就。。。先show代码:from selenium import webdriver driver = webdriver.Firefox() driver.get("https://www.oxcoder.com") assert "oxcoder".decode('utf-8') in ...

空空如也

1 2 3 4 5 ... 20
收藏数 141,400
精华内容 56,560
关键字:

自动化测试