元素定位

一,元素定位方式

二,编写脚本的一般流程

  1.导入模块

    from selenium  import  webdriver

  2.创建浏览器对象

    driver=webdriver.Firefox()

  3.打开指定页面

    url="https://www.baidu.com"

    driver.get(url)

  4.操作页内元素

  5.关闭页面

    driver.quit()

这是基本的一个流程,具体还要看题目要求。就套这个格式就行。

三,单元素定位方式 ->  find_element_by_xxx( )

    1.id属性值定位

      前提:目标元素具有id属性

      driver.find_element_by_id(目标元素的id属性值)

      返回值:定位到的元素对象

    2.name定位方法

      前提:目标元素具有name属性

      driver.find_element_by_name(目标元素的一个name属性值)

      返回值:定位到的元素对象

    3.class_name定位方法

      前提:目标元素具有class属性

      driver.find_element_by_class_name(目标元素的一个class属性值)

      返回值:定位到的元素对象

      注意事项:如果目标元素的class属性值由多值组成,放在find_element_by_class_name( )参数位置上只能是其中一个

      例:from time import sleep

        from selenium import webdriver

        driver=webdriver.Firefox()

        url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"

         driver.get(url)

         telA_el=driver.find_element_by_class_name("telA") #页面代码中class="telA newcontent",参数位置上只能是其中一个,所以参数写telA

          telA_el.send_keys("18311111111")

         sleep(3)

    4.tag_name定位方式

      driver.find_element_by_tag_name(标签名称)

      返回值:定位到的一个元素对象

      注意:参数只能是合法的标签名称。即使页面中同类标签有若干个,本方法只返回该类标签中的第一个。

    5.link_text定位方式(全部查询)

      driver.find_element_by_link_text(超链接文本内容)

      例:

      

        driver.find_element_by_partial_link_text("访问 新浪 网站")

    6.partial_link_text定位方式(模糊查询)

      driver.find_element_by_patial_link_text(超链接文本内容)

      例:

      driver.find_element_by_partial_link_text("访问 ")

      driver.find_element_by_partial_link_text("新浪")

      driver.find_element_by_partial_link_text("网站")

      运行代码:

      from time import sleep

       from selenium import webdriver

      driver=webdriver.Firefox()
      url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
      driver.get(url)
      userA_el=driver.find_element_by_link_text("访问 新浪 网站")
      userA_el.click()
      sleep(3)
   7.xpath定位 -> find_element_by_xpath( )
      xpath:HTML文件中目标标签的路径信息
      两种路径的描述方式:
         (1)绝对路径: /html/body/.....
             注意事项: /后必须有内容,内容应该为标签名称或星号(表示任意类别的标签)
         (2)相对路径:
             对标签的限定:限定的内容均放在[ ]中
             <1> [@属性名]
                利用元素属性:  [@属性名=属性值]--> //*[@id="userA"]
                属性与逻辑结合: [@属性名1=属性值 and @属性名2=属性值]-->  //*[@id="telA" and @class="telA"]
                层级与属性结合: //*[@id='p1']/input
             <2> [数字]:数字从1开始
                定位的是相对于目标标签的父级标签中同类标签的第几个。
                例://p[1]/input[1]
        
             <3> [函数]
                1)//*[text()="xxx"] :文本内容是xxx的元素
                2)//*[starts-with(@attribule,'xxx')] :属性以"xxx"开头的元素
                3)//*[contains(@attribute,'Sxxx')] :属性中含有"xxx"的元素
 
              例1: from time import sleep

                    from selenium import webdriver

                  driver=webdriver.Firefox()
                  url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
                  driver.get(url)
                  driver=driver.find_element_by_xpath("//*[text()='访问 新浪 网站'] ")
                  driver.click()

              例2:    from time import sleep

                  from selenium import webdriver
                  driver=webdriver.Firefox()
                  url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
                  driver.get(url)
                  driver=driver.find_element_by_xpath("//*[starts-with(@id,'f')]")
                  driver.click()

              例3:from time import sleep

                 from selenium import webdriver
                driver=webdriver.Firefox()
                url="file:///C:/Users/Administrator/Desktop/注册页面-素材/注册页面-素材/注册A.html"
                driver.get(url)
                driver=driver.find_element_by_xpath("//*[contains(@id,'wA')] ")
                driver.click()

 
 
 
 
        
           

  

  

      

 

原文地址:https://www.cnblogs.com/huyaxue/p/10003516.html