selenium基本用法以及元素定位(代码片段)

&赵小赵& &赵小赵&     2022-11-18     595

关键词:

  一、Selenium 简介

  Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。他支持IE、Firefox、Safari、Chrome、Android手机浏览器,也支持Java、C#、Python、Ruby、PHP等语言,支持如Windows、Linux、IOS、Android等操作系统,是一套为web自动化测试量身定制的web框架, Selenium框架由多个工具组成,包括:Selenium IDE,Selenium RC,Selenium WebDriver和SeleniumRC,至于他们的功能和作用请大家自行百度脑补,下面将重点介绍selenium主要功能WebDriver。

二、selenium基本功能

  1、浏览器并打开指定网页

  WebDriver driver = newChromeDriver();//初始化Google浏览器对象

  WebDriver driver = newFirefoxDriver();//初始化火狐浏览器

  WebDriver driver = new InternetExplorerDriver();//初始化IE浏览器

  driver.get(“www.baidu.com”)//打开百度页面

  driver.close();//关闭当前页面

  driver.quit();//关闭由selenium所启动的所有页面

  备注:有些浏览器比如火狐并没有安装在默认路径,那么需要指定浏览器路径:System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");

  2、浏览器操作  

  driver.navigate().back();//返回或向前
  driver.navigate().forward();//向后
  driver.navigate().refresh();//刷新
  driver.manage().window().maxsize();//最大画窗口 

  String title = driver.getTitle(); //返回当前页面的Ttile
  String currentUrl = driver.getCurrentUrl(); //返回当前页面的url
  getPageSource() //返回当前页面的源码
  getWindowHandle() //返回当前的浏览器的窗口句柄
  getWindowHandles() //返回当前的浏览器的所有窗口句柄

  备注:对于句柄等的介绍后续会有详细篇幅进行介绍,此处不做赘述

三、基本元素定位

 a、元素定位: 

 例子:

  <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba sb_bs"><span id="gbqfsa">Google Search</span></button>

  1、By.id(id) //用唯一属性id来定位非常推荐使用 优先级最高
  2、By.name(name) //用name属性来定位也是非常高效的优先级仅次于id
  3、By.linkText(linkText) //即通过超文本链接上的"文字信息"来定位元素,这种方式一般专门用于定位页面上的超文本链接:一般tag为<a>属性href=链接
  4、By.partialLinkText(linkText) //适用于链接类的元素,模糊匹配,即包含herf属性的元素 ,同BylinkText()
  5、By.className(className)) //对于元素的属性包含class的情况适用 <class = "src">
  6、By.tagName(name) //通用定位方式,适用于层级定位,比如button就是一个tag 因此一般都会找出多条记录,需要在进行定位,通常用for循环

  以上均为单元素定位,当然6一般定位的结果都是多个,其他的一般结果为1个。单元素定位的命令基本格式如下:

  WebElemet element = driver.findElement(By.id("imageField"));

  element.click();//点击

  element.sendKeys("String");//输入

  备注:有一个现象,就是复合类,即例子中的class="gbqfba sb_bs">,如果用driver.findElement(By.id("gbqfba sb_bs"))一定会报错,这种符合类必须用前面的或者后面的键值定位才能定位成功,即:driver.findElement(By.id("sb_bs"))or driver.findElement(By.id("gbqfba"))

 b、多元素定位:

  多元素定位其实是指定位的元素返回多个结果,一般会用List集合来存储结果,用for循环和if判断语句来找到自己需要的元素,比如用tagName定位,返回的结果就会多个如下:  

  List<WebElement> allInputs = driver.findElements(By.tagName("input"));//定位tagName为input的tag元素
  for(WebElement element :allInputs)
    if(element.getAttribute("type").equals("text"))
      System.out.println(e.getText().toString()); //打印出每个文本框里的值
    
  

 c、层级定位

  层级定位,顾名思义,就按照层级关系进行定位,一般是应用于无法直接定位到需要定位的元素,所以采用先定位其父元素,在定位子元素的方式,一般用于表格或下拉框定位:

  WebElement table = driver.findElement(By.id("table"));

  List <WebElement> rows  = table.findElement(By.id("tr"));

  //下拉框

  WebElement select = driver.findElement(By.name("select")); //

  List<WebElement> selectvalue = a.findElements(By.tagName("option"));

  for(WebElement value : selectvalue)

    System.out.println(“value”+value.getText())

  

 e、xpath定位

  Xpath是一个非常强大的定位方式,几乎可以定位到所有数据,但是在我们学习Xpath定位之前,我们要知道明确两个概念,绝对路径&相对路径,绝对路径是以“/”开始的,例如

  /body/buttononclick/input[1] 这就是相对路径的表达形式是以“//”开头的,比如//input[2],另外需要多说一句的是,当xpath的路径以"/"开头时,表示让Xpath解析引擎从文档的根·   节点开始解析。当xpath路径以"//"开头时,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。而当/出现在xpath路径中时,则表示寻找父节点的直接子节点,当"//        出现在xpath路径中时,表示寻找父节点下任意符合条件的子节点,不管嵌套了多少层级(这些下面都有例子,大家可以参照来试验)。弄清这个原则,我们就可以灵活的使用              Xpaht进行定位了,下面还是看几个"栗子"吧  

  查找页面根元素://
  查找页面上所有的input元素://input

  查找页面上第一个form元素内的直接子input元素(即只包括form元素的下一级input元素,使用绝对路径表示,单/号)://form[1]/input

  查找页面上第一个form元素内的所有子input元素(只要在form元素内的input都算,不管还嵌套了多少个其他标签,使用相对路径表示,双//号)://form[1]//input

  查找页面上第一个form元素://form[1]

  查找页面上id为loginForm的form元素://form[@id=‘loginForm‘]

  查找页面上具有name属性为username的input元素://input[@name=‘username‘]

  查找页面上id为loginForm的form元素下的第一个input元素://form[@id=‘loginForm‘]/input[1]

  查找页面具有name属性为contiune并且type属性为button的input元素://input[@name=‘continue‘][@type=‘button‘]

  查找页面上id为loginForm的form元素下第4个input元素://form[@id=‘loginForm‘]/input[4]  

 

  代码实例:WebElement xpath = driver.findElement(By.xpath("//form[@id=‘loginForm‘]"))

  xpath定位就介绍这些,后续还会更新关于Cssselect、js定位、下拉框、单选/多选框、文本框、弹窗、句柄等,敬请关注

  小技巧:
  1.当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。

  2.xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。

  3.当要定位一组元素相同元素时,可以考虑用tagName或name。

  4.当有链接需要定位时,可以考虑linkText或partialLinkText方式。

     5.在进行定位的时候,尽量使用相对路径定位,如果使用绝对路径,那么一但页面结构变化,则无法使用原有的定位方式,但是相对路径就特别灵活,复用性高,也是项目中特别常用的方式

  

selenium3元素定位详解与封装(代码片段)

为什么需要自动化测试在学习自动化测试之前,首先需要思考清楚的是为什么需要学习自动化测试,以及今天业界谈的研发效能对测试而言意味着什么?其实这就需要在测试以及整体研发的角度来思考问题,在今... 查看详情

web自动化必会「web基础元素定位元素操作selenium运行原理项目实战+框架」

1.Web基础-html、dom对象、js基本语法Dom对象里面涉及元素定位以及对元素的修改。因为对元素操作当中涉及的一些js操作,js基本语法要会用。得要掌握前端的基本用法。为什么要元素定位?因为找到这个元素,就能告... 查看详情

详解css绝对定位(代码片段)

基本定义和用法在CSS中,position属性指定一个元素(静态的,相对的,绝对或固定,以及粘性定位)的定位方法的类型。当设置position属性的值为absolute时,生成绝对定位的元素,将该元素从文档流中删除,原来的占位不再存在,... 查看详情

selenium自动化测试-3.元素定位(代码片段)

...,我们需要特定的信息来说明这个元素的唯一特征。selenium主要提供了8种定位元素方法:find_element_by_id  find_element_by_namefind_e 查看详情

selenium-xpath定位详解(代码片段)

工具  目前chrome浏览器支持ChroPath插件,这是一个非常好用的定位前端标签插件,在https://crxdl.com/中查询chropath下载离线包,手动安装插件即可 XPATH是啥?  XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到... 查看详情

selenium环境搭建及基本元素定位方式(代码片段)

...地址:http://chromedriver.storage.googleapis.com/index.html 一、selenium简介由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断;1、什么是sel... 查看详情

selenium元素定位(代码片段)

  使用selenium就不可避免的要提到界面元素定位,通过元素定位来实现一系列的逻辑操作。  selenium提供了8中元素定位的方式:    id、name、classname、tagname、linktext、partiallinktext、xpath、cssselector。  其中使用xpath来根... 查看详情

selenium定位元素(代码片段)

findElement()方法:当开始寻找符合指定条件的元素时,它将查询整个DOM,然后返回第一个找到的匹配元素。Byid:通过元素ID属性定位元素//driver.findElement(By.id("XXXX"));Byname:通过元素Name属性定位元素//driver,findElement(By.name("XXXX"));Bycla... 查看详情

selenium元素定位(代码片段)

 Selenium中元素定位一共有8种idnameclassNametagNamelinkTextpartialLinkTextxpathcssSelector//在这里仅介绍前6种基础定位方式一、通过ID定位   WebElementelement=driver.findElement(By.id("kw"));//查找ID为“kw”的元素二、通过name 查看详情

自动化测试:selenium八大元素定位基本介绍

本章节主要内容selenium6个简单元素定位方式selenium2个综合元素定位方式selenium定位方法的使用8大元素定位方式Selenium对网页的控制是基于各种前端元素的,在自动化过程中,对于元素的定位是基础,只有匹配到对应元... 查看详情

python爬虫selenium--selenium元素定位selenium访问元素信息selenium交互(代码片段)

游览之前先看Selenium简介、安装Selenium、Selenium基本使用,有助于理解后面的知识点。1.Selenium元素定位元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先要找... 查看详情

selenium元素定位(代码片段)

fromseleniumimportwebdriver模块的引入fromseleniumimportwebdriver  #引入webdriverid定位find_element_by_id(‘kw‘)       #id为kw的元素 name定位find_element_by_name() 查看详情

selenium常用api详解介绍(代码片段)

...创建,最后修改于一月21,2019转至元数据起始  一、selenium元素定位1.selenium定位方法2.定位方法的用法二、控制浏览器操作1.控制浏览器窗口大小2.控制浏览器后退、前进3.刷新页面三、WebDriver常用方法1.WebDriver常用方法2.其它... 查看详情

『心善渊』selenium3.0基础—4selenium基础元素定位详解(代码片段)

目录1、什么是元素定位2、Selenium元素定位常用API(1)By_id定位(2)by_name定位(3)by_class_name定位(4)by_tag_name定位(5)by_link_text定位(6)by_partial_link_text定位1、什么是元素定位元素定位就是查找HTML元素的过程。HTML元素指的是... 查看详情

selenium-元素的定位(代码片段)

前戏元素的定位是自动化测试的核心,要想操作一个元素,首先应该识别这个元素。Webdriver提供了一系列的元素定位方法,常用的有id,name,classname,linktext,partiallink,tagname,xpath,css讲定位之前先要了解说一下怎么定位,我... 查看详情

selenium库的基本用法(代码片段)

  1.基本使用fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver 查看详情

selenium--元素定位(代码片段)

定位界面元素1、根据元素特征:id,name,class,tag,超链接  写法1:ele=driver.find_element_by_id(‘kw‘)写法2:fromselenium.webdriver.common.byimportByele=driver.find_element(by=By.ID,value=‘kw‘) tag为元素标签,类似div,span等 超链接:driver.fi 查看详情

selenium定位一组元素(代码片段)

...ements我们以百度搜索结果页面为例。在百度搜索框输入“selenium”,点击“百度一下”按钮, 查看详情