精华内容
下载资源
问答
  • 元素定位的八种方法

    2021-06-10 20:54:40
    元素定位方法的分类 实例 # id drive.find_element_by_id("kw").send_keys("我系") # xpath drive.find_element_by_xpath('//*[@id="kw"]').send_keys("渣渣辉") # name drive.find_element_by_name("wd").send_...

    元素定位方法的分类

    在这里插入图片描述

    实例

    # id
    drive.find_element_by_id("kw").send_keys("我系")
    # xpath
    drive.find_element_by_xpath('//*[@id="kw"]').send_keys("渣渣辉")
    # name
    drive.find_element_by_name("wd").send_keys("系兄弟")
    #css sslector
    drive.find_element_by_css_selector('[autocomplete="off"]').send_keys("就来")
    # classname
    drive.find_element_by_class_name("s_ipt").send_keys("砍我")
    #tag name
    drive.find_element_by_tag_name("input")
    #link text
    drive.find_element_by_link_text('hao123').click()
    #partial link text
    drive.find_element_by_partial_link_text("hao1").click()
    
    

    注意
    tag name 方式 选取是元素中相同属性的第一个,如果不是第一个就搜不到

    link text与partial link text的区别
    link text 中的链接文本必须写完整,partial link text中的文本不需要

    展开全文
  • 一、WebDriver API提供了8种元素定位的方法: id name class name link text Xpath CSSselector tag name partial link text 定位Web页面上的元素可以通过元素区别于其他元素的一些属性:id,name,class name...

    Selenium自动化一般需要几个步骤操作:定位元素,获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动化出测试报告。

    一、WebDriver API提供了8种元素定位的方法:

    1. id
    2. name
    3. class name
    4. link text
    5. Xpath
    6. CSS selector
    7. tag name
    8. partial link text
    • 定位Web页面上的元素可以通过元素区别于其他元素的一些属性:id,name,class name,tag name等;
    • 可以通过位置属性:XPath和CSS,提供了以标签名为层级关系的定位方式;
    • XPath和CSS同样提供了通过相关元素来查找最终元素的方式;
    import org.openqa.selenium.By;
    ...
    findElement(By.id())                //方法通过 id 属性定位来元素
    findElement(By.name())              //通过 name 属性来定位元素
    findElement(By.className())         //通过 class 属性来定位元素
    findElement(By.tagName())           //通过元素的 tag name 来定位元素
    findElement(By.linkText())          //法通过元素标签对之间的文本信息来定位元素
    findElement(By.partialLinkText())   //通过元素标签对之间的部分文本信息来定位元素
    findElement(By.xpath())             //使用 XPath 语言来定位元素
    findElement(By.cssSelector())       //用于 CSS 语言定位元素
    

    (一)Id定位

    HTML规定id属性在HTML文档中必须唯一,WebDriver提供的id定位方法就是通过元素id属性查找元素

    通过id定位百度输入框与百度搜索按钮,如下

    driver.findElement(By.id("kw")).sendKeys("XXX");
    driver.findElement(By.id("su")).click();
    

    (二)Name定位

    HTML规定name来指定元素的名称,name的属性值,在当前页面可以不唯一。

     通过name定位百度输入框

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

    (三)class定位

    HTML规定class来指定元素的类名,用法和id,name类型

    通过class属性定位百度输入框和搜索按钮

    driver.findElement(By.className("s_ipt")).sendKeys("XXX");
    driver.findElement(By.className("bg s_btn")).click();

    (四)tag定位

    HTML的本质就是通过tag来定义实现不同的功能,每一个元素本质上也是一个tag。因为一个tag往往用来定义一类功能,所以通过tag识别某个元素的概率很低。例如我们打开任意一个页面,查看前端都会发现大量的<div>、<input>、<a>等tag,所以很难通过tag name去区分不同的元素

    通过标tag name定位百度的输入框与百度按钮会发现他们完全相同

    driver.findElement(By.tagName("input")).sendKeys("XXX");

    (五)link定位

    link定位是专门用来定位文本连接,获取百度首页的文本连接

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

    (六)partial link定位

    partial link定位是对link定位的一种补充,有些文本链接会比较长,这个时候就可以取文本的一部分定位,只要这一部分信息可以唯一的标识这个链接。

    <a class="mnav" name="tj_lang" href="#">一个很长很长的文本链接</a>

    通过partial link 定位如下

    findElement(By.partialLinkText("一个很长的"))
    findElement(By.partialLinkText("文本链接"))
    

    (七)CSS定位

    CSS(Cascading Style Sheets)是一种语言,他被用来描述HTML和XML文档的表现。CSS使用选择器来为页面元素绑定属性。这些选择器可被Selenium用作另外的定位策略。CSS可较为灵活地选择控制任意属性,一般情况下定位速度要比xpath快;

    选择器 例 子 描 述
    .class .intro class 选择器,选择 class="intro"的所有元素
    #id #firstname id 选择器,选择 id="firstname"的所有元素
    * * 选择所有元素
    element p 元素所有<p>元素
    element > element div > input 选择父元素为<div>的所有 <input> 元素
    element + element div + input 选择同一级中紧接在<div>元素之后的所有 <input> 元素
    [attribute=value] [target=_blank] 选择 target="_blank" 的所有元素

    下面以百度输入框和搜索按钮为例介绍 CSS 定位的用法:

    <span class="bg s_ipt_wr">
    	<input id="kw" class="s_ipt" autocomplete="off" maxlength="100" value="" name="wd">
    </span>
    <span class="bg s_btn_wr">
    	<input id="su" class="bg s_btn" type="submit" value="百度一下">
    </span>
    
    //1、通过 class 属性定位, 点号(.)表示通过 class 属性来定位元素;
    findElement(By.cssSelector(".s_ipt"))
    findElement(By.cssSelector(".bg s_btn"))
    //2、通过 id 属性定位, 井号(#)表示通过 id 属性来定位元素;
    findElement(By.cssSelector("#kw"))
    findElement(By.cssSelector("#su"))
    //3、通过标签名定位, 在 CSS 语言中,用标签名定位元素不需要任何符号标识,直接使用标签名即可;
    findElement(By.cssSelector("input"))
    //4、通过父子关系定位, 有标签名为span的父亲元素,查找它的所有标签名叫 input 的子元素;
    findElement(By.cssSelector("span > input"))
    //5、通过属性定位, 在CSS中也可以使用元素的任意可以唯一标识这个元素的属性。对于属性值来说,可加引号,也可不加,但注意和整个字符串的引号进行区分;
    findElement(By.cssSelector("input[autocomplete='off']"))
    findElement(By.cssSelector("input[maxlength='100']"))
    findElement(By.cssSelector("input[type='submit']"))
    //6、组合定位, 把上面的定位策略组合起来使用
    findElement(By.cssSelector("form.fm>span>input.s_ipt"))
    findElement(By.cssSelector("form#form>span>input#su"))
    

    XPath 与 CSS 的类似功能的简单对比

    XPath 与 CSS 的类似功能对比
    定位方式 XPath CSS
    标签 //div div
    By id //div[@id='id'] div#id
    By class //div[@class='class'] div.class
    By 属性 //div[@title='Move mouse here']

    div[title=Move mouse here]

    div[title^=Move]

    div[title$=here]

    div[title*=mouse]

    定位子元素

    //div[@id='id']/*

    //div/h1

    div#id>*

    div>h1

     

    (八)XPath定位

    XPath是一种在XML文档中定位元素的语言,有多重定位策略。因为HTML可以看做XML的一种实现,所以Selenium用户可以使用这种强大的语言在Web应用中定位元素

    (1)绝对路径定位

          如果把一个元素看做一个人的话,假设这个人没有任何属性特征(姓名,身份证号),但这个人存在于某个地理位置,           如xx省xx市xx区xx路xx号。对于页面上的元素而言也会有这样的一个绝对地址

    通过绝对路径的方式找到百度输入框和搜索按钮。

    findElement(By.xpath("/html/body/div/div[2]/div/div/div/from/span/input"))
    findElement(By.xpath("/html/body/div/div[2]/div/div/div/from/span[2]/input"))
    

    XPath 主要用标签名的层级关系来定位元素的绝对路径,**最外层为 html 语言,有 body 文本内,一级一级往下查找,如果一个层级下有多个相同的标签名,那么就按上下顺序确定是第几个,例如 **div[2]**表示当前层级下的第二个 div 标签。

    (2)元素属性定位

       除了使用绝对路径外,XPath 也可以使用元素的属性值来定位。

       以百度输入框和搜索按钮为例

    //  // 表示当前页面某个目录下;
    //  input 表示定位元素的标签名;
    //  [@id='kw'] 表示这个元素的 id 属性值等于 kw;
    
    findElement(By.xpath("//input[@id='kw']"))             //通过id属性值来定位
    findElement(By.xpath("//input[@id='su']"))                 
    findElement(By.xpath("//input[@name='wd']"))           //通过name属性值来定位
    findElement(By.xpath("//input[@class='s_ipt']"))       //通过class属性值来定位
    findElement(By.xpath("//*[@class='bg s_btn']"))        //如果不想指定标签名,则也可以用星号(*)代替
    //使用 XPath 不局限于 id、name 和 class 这三个属性值,元素的任意属性值都可以使用,只要它能唯一的标识一个元素
    findElement(By.xpath("//input[@maxlength='100']"))      //通过maxlength属性值来定位
    findElement(By.xpath("//input[@autocomplete='off']"))
    findElement(By.xpath("//input[@type='submit']"))
    

    (3)层级与属性结合

    如果一个元素本身并没有可以唯一标识这个元素的属性值,那么我们可以找其上一级元素,如果它的上一级元素有可以唯一标识属性的值,也可以拿来使用

    //baidu.html 文本
    <form id="form" class="fm" action="/s" name="f">
    	<span class="bg s_ipt_wr">
    		<input id="kw" class="s_ipt" autocomplete="off" maxlength="100" value="" name="wd">
    	</span>
    </form>

    百度输入框本身没有可利用的属性值,那么我们可以查找它的上一级属性;如果父元素没有可利用的属性值,那么可以继续向上查找“爷爷”元素。通过 XPath 描述如下

    findElement(By.xpath("//span[@class='bg s_ipt_wr']/input"))
    //span[@class='bg s_ipt_wr'] 通过 class 属性定位到父元素,后面/input 就表示父元素下面的子元素
    findElement(By.xpath("//form[@id='form']/span/input"))     //通过爷爷元素form查找input
    findElement(By.xpath("//form[@id='form']/span[2]/input"))
    

    (4)使用逻辑运算符

    如果一个属性不能唯一地区分一个元素,我们还可以使用逻辑运算符连接多个属性来查找元素

    //baidu.html 文本
    <input id="kw" class="su" name="ie">
    <input id="kw" class="aa" name="ie">
    <input id="bb" class="su" name="ie">
    

    如上面的三行元素,假设我们现在要定位第一行元素,如果使用 id 将会与第二行元素重名,如果使用 class将会与第三行元素重名。如果同时使用 id 和 class 就会唯一的标识这个元素,那么这个时候就可以通过逻辑运算符“and”来连接两个条件;也可以用“and”连接更多的属性来唯一地标识一个元素;

    findElement(By.xpath("//input[@id='kw' and @class='su']/span/input"))
    

    总结

    最后总结一下关于自己xpath定位的一些想法

    1、全路径定位:            //html/body/div/div/div[2]/p[3]/a(用得少)
    2、半路径定位:            //div[2]/p[3]/a(用得少)
    3、字符定位:              //div/ul/li[text()="百科"]
    4、包含字符定位:          //div/p/a[contains(text(),"百")]
    5、超链接定位:            link=百科
    6、相对位置定位:          //div/p[a="文库"]/a
    7、属性定位:             //div/p/a[@name="tj_baike"]
    8、使用包含属性定位:     //div/input[contains(@class,"btn")]

    相关的API

    WebDriver API(官方文档):https://www.selenium.dev/selenium/docs/api/java/index.html

    Selenium-python中文文档:https://python-selenium-zh.readthedocs.io/zh_CN/latest/

    WebDriver API(博客):https://blog.csdn.net/qq_37546891/article/details/78998954

    展开全文
  • 一、元素定位,以百度页面为例 1.通过id定位 2.通过name定位 3.通过class定位 注意:当class属性值由多个空格隔开,只取其中一个即可。 4.通过tag定位 5.通过link定位 6.通过partial...

    说明:定位时都是未登陆百度状态

    一、元素定位,以百度页面为例

    1.通过id定位

    2.通过name定位

     

    3.通过class定位

     

    注意:当class属性值由多个空格隔开,只取其中一个即可。

    4.通过tag定位

     5.通过link定位

    6.通过partial link定位

     7.通过xpath定位

    8.通过css定位

     二、确定唯一性

     

     HTML页面在右上方的搜索框输入关键字,回车查看id或其他属性是否唯一

    或者在FirePath页面通过CSS或Xpath栏输入属性,上下滑动查看元素是否唯一

     三、复数定位

    复数定位和单数定位方法一样,当有多个相同属性时,可以通过取下标来定位

     

     

    转载于:https://www.cnblogs.com/xiaoxin-test/p/10414901.html

    展开全文
  • 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素。其中By类常用定位方式共八种,现分别介绍如下: 1. By.name() 假设我们要测试页面源码如下...

    如果你只是想快速实现控件抓取,而不急于了解其原理,可直接看:

    http://blog.csdn.net/kaka1121/article/details/51878346

    如果你想学习web端自动化,或者更快速地完成更稳定的前端自动化,不妨尝试点击:

    Web自动化框架LazyUI使用手册(1)--框架简介


    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下:

    1. By.name()

    假设我们要测试的页面源码如下:

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

    当我们要用name属性来引用这个button并点击它时,代码如下:

    public class SearchButtonByName {
            public static void main(String[] args){
                   WebDriver driver = new FirefoxDriver();
                   driver.get("http://www.forexample.com");
                   WebElement searchBox = driver.findElement(By.name("btnK"));
                   searchBox.click();
            }
    }

    2. By.id()

    页面源码如下:

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

    要引用该button并点击它时,代码如下:

    public class SearchButtonById {
    
            public static void main(String[] args){
                WebDriver driver = new FirefoxDriver();
                driver.get("http://www.forexample.com");
                WebElement searchBox = driver.findElement(By.id("gbqfba"));
                searchBox.click();
    
            }
    
    }

    3. By.tagName()

    该方法可以通过元素的标签名称来查找元素。该方法跟之前两个方法的区别是,这个方法搜索到的元素通常不止一个,所以一般建议结合使用findElements方法来使用。比如我们现在要查找页面上有多少个button,就可以用button这个tagName来进行查找,代码如下:

    public class SearchPageByTagName{
    
         public static void main(String[] args){
                WebDriver driver = new FirefoxDriver();
                driver.get("http://www.forexample.com");
                List<WebElement> buttons = driver.findElements(By.tagName("button"));
                System.out.println(buttons.size());  //打印出button的个数
    
        }
    
    }

    在使用tagName方法进行定位时,有些HTML元素的tagName是相同的,比如单选框、复选框、文本框和密码框的元素标签都是input,此时单靠tagName无法准确地得到我们想要的元素,需要结合type属性才能过滤出我们要的元素。

    4. By.className()

    className属性是利用元素的css样式表所引用的伪类名称来进行元素查找的方法。对于任何HTML页面的元素来说,一般程序员或页面设计师会给元素直接赋予一个样式属性或者利用css文件里的伪类来定义元素样式,使元素在页面上显示时能够更加美观。一般css样式表可能会长成下面这个样子:

    .buttonStyle{
    
        width: 50px;
        height: 50px;
        border-radius: 50%;
        margin: 0% 2%;
    
    }

    定义好后,就可以在页面元素中引用上述定义好的样式,如下:

     <button name="sampleBtnName" id="sampleBtnId" class="buttonStyle">I'm Button</button>
    如果此时我们要通过className属性来查找该button并操作它的话,就可以使用className属性了,代码如下:

    public class SearchElementsByClassName{
    
        public static void main(String[] args){
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.forexample.com");
            WebElement searchBox =  driver.findElement(By.className("buttonStyle"));
            searchBox.sendKeys("Hello, world");
        }
    }
    注意:使用className来进行元素定位时,有时会碰到一个元素指定了若干个class属性值的“复合样式”的情况,如下面这个button:<button id="J_sidebar_login" class="btn btn_big btn_submit" type="submit">登录</button>。这个button元素指定了三个不同的css伪类名作为它的样式属性值,此时就必须结合后面要介绍的cssSelector方法来定位了,稍后会有详细例子。


    5. By.linkText()

    这个方法比较直接,即通过超文本链接上的文字信息来定位元素,这种方式一般专门用于定位页面上的超文本链接。通常一个超文本链接会长成这个样子:

     <a href="/intl/en/about.html">About Google</a>
    我们定位这个元素时,可以使用下面的代码进行操作:

    public class SearchElementsByLinkText{
        public static void main(String[] args){
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.forexample.com");
            WebElement aboutLink = driver.findElement(By.linkText("About Google"));
            aboutLink.click();
        }
    }

    6. By.partialLinkText()

    这个方法是上一个方法的扩展。当你不能准确知道超链接上的文本信息或者只想通过一些关键字进行匹配时,可以使用这个方法来通过部分链接文字进行匹配。代码如下:

    public class SearchElementsByPartialLinkText{
        public static void main(String[] args){
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.forexample.com");
            WebElement aboutLink = driver.findElement(By.partialLinkText("About"));
            aboutLink.click();
        }
    }

    注意:使用这种方法进行定位时,可能会引起的问题是,当你的页面中不止一个超链接包含About时,findElement方法只会返回第一个查找到的元素,而不会返回所有符合条件的元素。如果你要想获得所有符合条件的元素,还是只能使用findElements方法。


    7. By.xpath()

    这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素。在正式开始使用XPath进行定位前,我们先了解下什么是XPath。XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。

    假设我们现在以图(2)所示HTML代码为例,要引用对应的对象,XPath语法如下:


    绝对路径写法(只有一种),写法如下:

    引用页面上的form元素(即源码中的第3行):/html/body/form[1]

    注意:1. 元素的xpath绝对路径可通过firebug直接查询。2. 一般不推荐使用绝对路径的写法,因为一旦页面结构发生变化,该路径也随之失效,必须重新写。3. 绝对路径以单/号表示,而下面要讲的相对路径则以//表示,这个区别非常重要。另外需要多说一句的是,当xpath的路径以/开头时,表示让Xpath解析引擎从文档的根节点开始解析。当xpath路径以//开头时,则表示让xpath引擎从文档的任意符合的元素节点开始进行解析。而当/出现在xpath路径中时,则表示寻找父节点的直接子节点,当//出现在xpath路径中时,表示寻找父节点下任意符合条件的子节点,不管嵌套了多少层级(这些下面都有例子,大家可以参照来试验)。弄清这个原则,就可以理解其实xpath的路径可以绝对路径和相对路径混合在一起来进行表示,想怎么玩就怎么玩

     

    下面是相对路径的引用写法:

    查找页面根元素://

    查找页面上所有的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]

    Xpath功能很强大,所以也可以写得更加复杂一些,如下面图(3)的HTML源码。

     

    如果我们现在要引用id为“J_password”的input元素,该怎么写呢?我们可以像下面这样写:

    WebElement password = driver.findElement(By.xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']"));

    前面讲的都是xpath中基于准确元素属性的定位,其实xpath作为定位神器也可以用于模糊匹配。比如下面图(4)所示代码:


    这段代码中的“退出”这个超链接,没有标准id元素,只有一个rel和href,不是很好定位。不妨我们就用xpath的几种模糊匹配模式来定位它吧,主要有三种方式,举例如下

    a. 用contains关键字,定位代码如下:

    driver.findElement(By.xpath(“//a[contains(@href, ‘logout’)]”));

    这句话的意思是寻找页面中href属性值包含有logout这个单词的所有a元素,由于这个退出按钮的href属性里肯定会包含logout,所以这种方式是可行的,也会经常用到。其中@后面可以跟该元素任意的属性名。

    b. 用start-with,定位代码如下:

    driver.findElement(By.xpath(“//a[starts-with(@rel, ‘nofo’)]));

    这句的意思是寻找rel属性以nofo开头的a元素。其中@后面的rel可以替换成元素的任意其他属性。

    c. 用Text关键字,定位代码如下:

    driver.findElement(By.xpath(“//*[text()=’退出’]));

    这个方法可谓相当霸气啊。直接查找页面当中所有的退出二字,根本就不用知道它是个a元素了。这种方法也经常用于纯文字的查找。

    另外,如果知道超链接元素的文本内容,也可以用

    driver.findElement(By.xpath(“//a[contains(text(), ’退出’)]));

    这种方式一般用于知道超链接上显示的部分或全部文本信息时,可以使用。

     

    最后,关于xpath这种定位方式,webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,所以这是一个非常费时的操作,如果你的脚本中大量使用xpath做元素定位的话,将导致你的脚本执行速度大大降低,所以请慎用。


    8. By.cssSelector()

    cssSelector这种元素定位方式跟xpath比较类似,但执行速度较快,而且各种浏览器对它的支持都相当到位,所以功能也是蛮强大的。

    下面是一些常见的cssSelector的定位方式:

    定位id为flrs的div元素,可以写成:#flrs     注:相当于xpath语法的//div[@id=’flrs’]

    定位id为flrs下的a元素,可以写成 #flrs > a  注:相当于xpath语法的//div[@id=’flrs’]/a

    定位id为flrs下的href属性值为/forexample/about.html的元素,可以写成: #flrs > a[href=”/forexample/about.html”]

    如果需要指定多个属性值时,可以逐一加在后面,如#flrs > input[name=”username”][type=”text”]。

     

    明白基本语法后,我们来尝试用cssSelector方式来引用图(3)中选中的那个input对象,代码如下:

    WebElement password = driver.findElement(By.cssSelector("#J_login_form>dl>dt>input[id=’ J_password’]"));

    同样必须注意层级关系,这个不能省略。

     

    cssSelector还有一个用处是定位使用了复合样式表的元素,之前在第4种方式className里面提到过。现在我们就来看看如何通过cssSelector来引用到第4种方式中提到的那个button。button代码如下:

    <button id="J_sidebar_login" class="btn btn_big btn_submit" type="submit">登录</button>


    cssSelector引用元素代码如下:

    driver.findElement(By.cssSelector("button.btn.btn_big.btn_submit"))

    。这样就可以顺利引用到使用了复合样式的元素了。

     

    此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符。例如:

    匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^='id_prefix_']

    匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$='_id_sufix']

    匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id*='id_pattern']

     

    最后再总结一下,各种方式在选择的时候应该怎么选择:

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

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

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

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


    展开全文
  • 元素定位八种方法

    2020-07-25 16:05:10
    元素定位: 8种方法: id 属性 唯一 name 属性 class_name 属性 tag_name 标签名,用最少 * driver.find_element_by_tag_name(‘a’).click()*,此语句会定位到htmlz中第一个使用a标签地方 link_text html中a...
  • selenium定位元素的八种方法 web driver提供了八种元素定位的方法: id, name, class name, tag name, link text, partial link text, xpath, css selector   如百度首页,百度一下按钮的元素信息 &...
  • 3、通过类名进行元素定位 find_elements_by_class_name() 4、通过元素标签属性 find_element_by_tag_name() 5、 通过页面文本信息 find_element_by_link_text() 6、通过模糊文本信息 find_element_by_partial_link_...
  • selenium 常用的八种定位元素方法

    千次阅读 2019-10-16 23:34:37
    转载 Selenium Webdriver元素定位的八种常用方式 ...
  • web driver提供了八种元素定位的方法: id name class name tag name link text partial link text xpath css selector 如百度首页,百度一下按钮的元素信息 <input type=...
  • webdriver 提供了八种元素定位方法: 在 Python 语言中对应定位方法如下: find_element_by_id() find_element_by_name() find_element_by_class_name() find_element_by_tag_name() find_element_by_link_text() ...
  • 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素。其中By类常用定位方式共八种,现分别介绍如下。 1. By.name() 假设我们要测试页面源码...
  • Selenium Webdriver元素定位的八种常用方式     在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别...
  • 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素。其中By类常用定位方式共八种,现分别介绍如下。 1. By.name() 假设我们要测试页面源码...
  • selenium之八种元素定位方法 webDriver提供了8种用于定位元素的方法 id定位(唯一)find_element_by_id(“kw”) name定位 find_element_by_name(“wd”) class name定位 find_element_by_class_name(“wd”) tag ...
  • Selenium 八种元素定位方法 前言: 我们在做WEB自动化时,最根本就是操作页面上元素,首先我们要能找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人员一样用肉眼来分辨页面上元素。那么...
  • Python+Selenium自动化-定位页面元素的八种方法 本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。 0.元素定位方法主要有: id定位:find_element_by_id(' ') name定位:find_...
  • 前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。...web driver提供了八种元素定位的方法: id name class name tag name l...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 349
精华内容 139
关键字:

元素定位的八种方法