zoukankan      html  css  js  c++  java
  • ui自动化之selenium操作(三)xpath定位

    xpath 的定位方法,非常强大.使用这种方法几乎可以定位到页面上的任意元素。

    1. 什么是xpath?

    xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。

    2. xpath的缺点

    xpath 这种定位方式,webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素,这是个非常费时的操作,如果脚本中大量使用xpath做元素定位的话,脚本的执行速度可能会稍慢;

    3. 绝对路径定位

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="div1">
            <input name="div1input"/>
            <a href="http://www.sogou.com">搜狗搜索</a>
            <img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img>
            <input type="button" value="查询"/>
        </div>
        <br />
        <div name="div2">
            <input name="div2iniput"/>
            <a href="http://www.baidu.com">百度搜索</a>
            <img alt="div2-img2" src="http://www.baidu.com/img/bdlogo.png" href="http:/www.baidu.com">百度图片</img>
        </div>
    </body>
    </html>
    test.html

    以上面的test.html举例,想要定位到查询按钮,则用绝对路径定位就是:

    browser.find_element_by_xpath("/html/body/div/input[@value='查询']")

    这样定位的缺点就是:

     一旦页面结构发生改变,改路径也随之失效,必须重新。 所以不推荐使用绝对路径的写法;

    4. 相对路径定位

    相对路径定位:

    browser.find_element_by_xpath("//input[@value='查询']")

    5. 绝对路径和相对路径的区别

    绝对路径  以 "/"  开头, 让xpath 从文档的根节点开始解析;

    相对路径  以"//" 开头, 让xpath 从文档的任何元素节点开始解析;

    6. 使用索引号定位

    browser.find_element_by_xpath("//input[2]")

    7. 利用元素属性定位

    browser.find_element_by_xpath("//input[@id='wd']")

    8. 用by定位元素

    有时需要使用定位方法,在具体通过哪种定位方式(id 或 name)根据实际场景而定位,By 就可以设置定位策略。

    browser.find_element(By.ID,'kw')
    browser.find_element(By.NAME,"wd")
    browser.find_element(By.CLASS_NAME,"s_ipt")
    browser.find_element(By.TAG_NAME,"input")
    browser.find_element(By.LINK_TEXT,u"新闻")
    browser.find_element(By.PARTIAL_LINK_TEXT,u"新")
    browser.find_element(By.XPATH,"//*[@class='bg s_btn']")
    browser.find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
    

    find_element()方法只用于定位元素。它需要两个参数,第一个参数是定位方式,这个由 By 提供;第二个参数是定位的值。在使用 By 时需要将 By 类导入。

    from selenium.webdriver.common.by import By

    ps:如果在使用过程中发现pycharm没有提示,那么说明你导入了假的selenium,需要进入到python的安装目录,python.exe的同级目录下手动删除selenium文件夹;

    9. 使用浏览器调试工具直接获取xpath语句

  • 相关阅读:
    Oracle SQL语句收集
    SqlParameter In 查询
    SQL 性能优化
    Entity Framework
    【XLL API 函数】 xlfSetName
    【XLL API 函数】xlfUnregister (Form 2)
    【XLL API 函数】xlfUnregister (Form 1)
    【Excel 4.0 函数】REGISTER 的两种形式以及VBA等效语句
    【Excel 4.0 函数】REGISTER
    【Bochs 官方手册翻译】 第一章 Bochs介绍
  • 原文地址:https://www.cnblogs.com/cocc/p/6555754.html
Copyright © 2011-2022 走看看