1、在selenium 框架中,操作元素定位使用的类是By,里面方法有8种,那么也就是说,定位页面的元素属性方法有8种,分别是:

ID = "id"(每个元素的id是唯一的,不可重复的)

XPATH = "xpath"

LINK_TEXT = "link text"

PARTIAL_LINK_TEXT = "partial link text"

NAME = "name"

TAG_NAME = "tag name"

CLASS_NAME = "class name"

CSS_SELECTOR = "css selector"

2、元素定位从分类上而言:

1)单个元素定位

2)多个元素定位(元素属性都一致) 

  A、获取到的元素属性,它是一个列表

  B、按照我们需要被定位的元素属性,它在列表中是第几位,那么就使用它的索引来定位

3、单个元素定位示例(id)

 1 from selenium import webdriver
 2 import time as t
 3 #实例化webdriver,并指定要测试的浏览器
 4 driver=webdriver.Chrome()
 5 #打开浏览器导航到百度
 6 driver.get("http://www.baidu.com")
 7 #send_keys是输入的方法(通过id属性定位到百度的搜索输入框,并且输入搜索的关键字)
 8 driver.find_element_by_id("kw").send_keys("selenium")
 9 t.sleep(3)
10 driver.quit()

4、单个元素定位示例(name)

1 from selenium import webdriver
2 import time as t
3 driver=webdriver.Chrome()
4 driver.get("http://www.baidu.com")
5 driver.find_element_by_name("wd").send_keys("selenium")
6 t.sleep(3)
7 driver.quit()

5、单个元素定位示例(class_name)

1 from selenium import webdriver
2 import time as t
3 driver=webdriver.Chrome()
4 driver.get("http://www.baidu.com")
5 driver.find_element_by_class_name("s_ipt").send_keys("selenium")
6 t.sleep(3)
7 driver.quit()

6、当一个元素使用ID,name,class_name定位不到的时候,那么这个时候使用css(基于样式)和xpath(基于路径)

7、单个元素定位示例(css_selector)

 

 

 

1 from selenium import webdriver
2 import time as t
3 driver=webdriver.Chrome()
4 driver.get("http://www.baidu.com")
5 driver.find_element_by_css_selector("#kw").send_keys("selenium")
6 t.sleep(3)
7 driver.quit()

注:在Chrome浏览器中的百度首页,右键选择“检查”,在弹出的页面点击选择元素图标,再去选择百度的搜索输入框,在蓝色框选的区域点击右键选择“copy selector”,如下图所示:

 

 

8、单个元素定位(xpath)

1 from selenium import webdriver
2 import time as t
3 driver=webdriver.Chrome()
4 driver.get("http://www.baidu.com")
5 driver.find_element_by_xpath('//*[@id="kw"]').send_keys("selenium")
6 t.sleep(3)
7 driver.quit()

注:在元素的id属性为动态的时候(id一直在变化),使用 full path,其他情况使用xpath.

9、单个元素定位(link_text和partial_link_text)

1 from selenium import webdriver
2 import time as t
3 driver=webdriver.Chrome()
4 driver.get("http://www.baidu.com")
5 driver.find_element_by_link_text("视频").click()   #精确查找
6 driver.find_element_by_partial_link_text("").click()   #模糊查找
7 t.sleep(3)
8 driver.quit()

10、多个元素定位示例(id)

 1 from selenium import webdriver
 2 import  time as t
 3 driver=webdriver.Chrome()
 4 driver.get("file:///D:/test/code/testDev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index(2).html")
 5 listID=driver.find_elements_by_id("login")
 6 #输入账户
 7 listID[0].send_keys("admin")
 8 t.sleep(2)
 9 #输入密码
10 listID[1].send_keys("123")
11 t.sleep(2)
12 #点击登录按钮
13 listID[2].click()
14 t.sleep(2)
15 t.sleep(3)
16 driver.quit()

11、多个元素定位示例(tag_name)

 1 from selenium import webdriver
 2 import  time as t
 3 #实例化webdriver,并且指定要测试的浏览器
 4 driver=webdriver.Chrome()
 5 #打开浏览器导航到百度
 6 driver.get('http://www.baidu.com')
 7 inputs=driver.find_elements_by_tag_name("input")
 8 inputs[7].send_keys("selenium")
 9 t.sleep(3)
10 driver.quit()

12、可长期使用的方法示例(运行代码后无警告)

1 from selenium import webdriver
2 from selenium.webdriver.common.by import By
3 import time as t
4 driver=webdriver.Chrome()
5 driver.get("http://www.baidu.com")
6 driver.find_element(By.ID,"kw").send_keys("qq异常")
7 t.sleep(3)
8 driver.quit()