python+selenium -- 2定位

我是研究僧i 提交于 2019-12-05 03:54:35

selenium定位元素的方法有很多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的。所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了。

下面简单介绍一下个定位方法概念

1,id定位:

    find_element_by_id()  只会查找页面符合条件的第一个节点,并返回;但是定位不到元素则会报错。

  # 定位百度首页输入框

 

 

 

 2、name定位:

      find_element_by_name()
     # 定位百度一下

 

 

 

 

 3、class定位:

      find_element_by_class_name()
     # 根据class属性定位百度一下

PS:

   # 当class属性有多个的时候,带空格
   # 当有多个class属性的时候,此空格并不是空的字符串,而是此class具有多重属性
   # class="search_ipt search_inp_border j_search_input tb_header_search_input"
   # 贴吧输入框
   # 确定其中某一个属性是页面唯一以后,取此属性即可
  driver.find_element_by_class_name("search_ipt").send_keys("你好")

 

4、link定位(链接):

     find_element_by_link_text("http://www.baidu.com/link?url=sK3y4KUNV8YUp7YLDZF5Cr9ORQ56YrlkyQ_F_Qr1t_NhY_NRGezXt197KjOq1NqG")
    # <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>
    # href="http://news.baidu.com": 一般为link属性
    #根据link的文字内容“新闻”定位到link链接

   #如果herf字段过长,可以使用partial_link定位,测方法可截取部分文字定位

    find_element_by_partial_link_text("sK3y4KUNV8YUp7YLDZF5Cr9ORQ56YrlkyQ_F_Qr1t_NhY_NRGezXt197KjOq1NqG")

 

5,CSS定位:

     find_element_by_css_selector()(css路径并不唯一,所以不建议使用)

6,Xpath定位:最佳选择

    find_element_by_xpath()

 

 

7,复数定位方式:elements (对元素不唯一)

   #以ID为例,与单数定位不同在于element是elements

   driver.find_elements_by_id()

   #复数定位关键是找出元素的下标点

  # 当不清楚该元素在页面中存在几个定位到几个元素的时候,可以用已下方法打印出来筛选

  elements = driver.find_elements_by_id('kw')
  print(len(elements))

 

 

 

 

 

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!