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

 



posted @ 2018-05-18 23:46  windfall丶  阅读(444)  评论(0编辑  收藏  举报