zoukankan      html  css  js  c++  java
  • selenium常见的元素定位方法

    一、获取元素

      1)通过谷歌浏览器自动的工具访问百度首页,我们可以看到,页面上的元素都是由一行行的代码组成的,它们之间有层级地组织起来,每个元素之间都有不同的标签和值,我们可以通过这些不同的标签和值来找到这些元素。

    如下图所示,通过定位工具,我们定位到“百度一下”搜索框的元素了。

    2)webdriver提供了八种定位方式,分别是

    • find_element_by_id   
    • find_element_by_name
    • find_element_by_xpath
    • find_element_by_link_text
    • find_element_by_partial_link_text
    • find_element_by_tag_name
    • find_element_by_class_name
    • find_element_by_css_selector

    二、定位元素

    1)使用find_element_by_id 方式定位元素

    根据上图所示,可以明显的知道“百度一下”搜索框的id=“su”,所以可以得知 driver.find_element_by_id(“su”)

    2)使用find_element_by_name方式定位元素

    HTML规定name来指定元素的名称,因此它的作用更像是人名,name的值在页面中可以不唯一,通过定位工具定位到百度搜索输入框的name值为“wd”

    所以可以得知driver.find_element_by_name(“wd”)

    3)使用find_element_by_xpath方式定位元素

    这里要介绍一下如何获取页面元素的xpath路径的方法,如果你是大神可以自己写,如果跟作者一样很喽,可以通过开发者工具获取,选择元素右击->Copy->Copy Xpath,可以直接拷贝到xpath路径.

    所以可以得知driver.find_element_by_xpath(“//*[@id=‘kw’]”)

    4)使用find_element_by_link_textfind_element_by_partial_link_text方式定位元素

    通过文字链接来定位元素,他们两个很相像,功能也很类似,但是他们一个是匹配全部,一个是匹配部分,可以参考下图。

    所以可以得知driver.find_element_by_link_text(“贴吧”)

    三、实例

    参考了这么多方法来定位元素,下面来看看这个登录百度贴吧的实例

     1 #coding=utf-8
     2 from selenium import webdriver
     3 import time
     4 
     5 driver = webdriver.Chrome()
     6 driver.get("http://www.baidu.com")
     7 driver.find_element_by_name("tj_trtieba").click()
     8 driver.find_element_by_name("kw1").send_keys("三星S8")
     9 time.sleep(2)
    10 driver.find_element_by_link_text("进入贴吧").click()
    11 time.sleep(2)
    12 driver.find_element_by_xpath("//*[@id='com_userbar']/ul/li[4]/div/a").click()
    13 time.sleep(1)
    14 driver.find_element_by_id("TANGRAM__PSP_11__footerULoginBtn").click()
    15 time.sleep(2)
    16 driver.find_element_by_id("TANGRAM__PSP_11__userName").clear()
    17 driver.find_element_by_id("TANGRAM__PSP_11__userName").send_keys("xxxxx")
    18 time.sleep(2)
    19 driver.find_element_by_id("TANGRAM__PSP_11__password").clear()
    20 driver.find_element_by_id("TANGRAM__PSP_11__password").send_keys("xxxxx")
    21 time.sleep(2)
    22 driver.find_element_by_id("TANGRAM__PSP_11__submit").click()
    23 driver.quit()

    下面再推荐一个新手练习定位元素的网站:http://sahitest.com/demo/index.htm



  • 相关阅读:
    [转]从程序员到项目经理(一)
    [转]WCF技术的不同应用场景及其实现分析(续)
    [转]从程序员到项目经理(12):如何管理自己的时间(上)
    [转]使用XML文件来动态配置ASP.NET MVC的Route规则
    [转]WF是什么系列之 [ WF控制机械手臂 (3D模型) ]
    [引]深圳 2013年软考 报名处理
    亮剑 项目开发管理 你的电脑都用有哪些工具软件?
    [转]关于vs2005、vs2008和vs2010项目互转的总结
    TinyMCE(富文本编辑器)
    html编辑器kindeditor
  • 原文地址:https://www.cnblogs.com/big-white/p/9058492.html
Copyright © 2011-2022 走看看