1 # -*- coding:utf-8 -*-
2
3 """
4 selenium webdriver 定位元素是通过使用 findElement() 和 findElements()方法.
5 findElement() 方法返回一个基于指定查询条件的 WebElement 对象或是抛出一个没有
6 找到符合条件元素的异常.
7 findElements()方法会返回匹配指定查询条件的 WebElement的集合,如果没有找到则返回为空.
8 findElement() 和 findElements() 方法当找不到相应的元素的时候就会抛出 NoSuchElementFoundException 异常.
9 """
10
11 from selenium import webdriver
12 from selenium.webdriver.common.by import By
13
14 driver = webdriver.Firefox()
15 driver.get('http://www.51testing.com')
16 print driver.find_element(By.ID, 'username').get_attribute('type') #通过 ID 属性定位元素
17
18 driver.get('http://www.baidu.com')
19 print driver.find_element(By.CLASS_NAME, 's_ipt').get_attribute('name') #通过 css 属性定位元素
20
21 print driver.find_element(By.NAME, 'wd').get_attribute('id') #通过 name 属性定位元素
22
23 #层级定位, 先定位父元素, 再定位子元素
24 print driver.find_element(By.CLASS_NAME, 's_ipt_wr').find_element(By.NAME, 'wd').get_attribute('class')
25
26 """
27 findElements() 方法, 可以得到匹配指定规则的集合列表
28 """
29 links = driver.find_elements(By.XPATH, './/a')
30 #print type(links)
31 #print len(links)
32
33 for link in links:
34 print 'URL: ', link.get_attribute('href'), ' 名称: ', link.get_attribute('text')
35
36 print driver.find_element(By.LINK_TEXT, '关于百度').get_attribute('href') #通过链接名定位链接
37
38 print driver.find_element(By.PARTIAL_LINK_TEXT, '把百度').get_attribute('href') #通过部分链接名定位链接