元素定位常用方法
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') #通过部分链接名定位链接