[关闭]
@52fhy 2016-02-20T16:56:43.000000Z 字数 1580 阅读 604

04-selenium自动化--页面DOM查找

工具


本节内容:
· id
· name
· class name
· link text
· partial link text
· tag name
· xpath
· css selector

与js里的document.getElementById类似,我们可以使用webdriver进行模拟操作,进行元素查找、操作。

下面的例子是对模拟用户访问百度首页,输入selenium,并点击搜索的过程。提供了多种查找元素节点的方法:

百度输入框的属性信息,如下:

  1. <input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
  2. <input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">

脚本:

  1. # -*- coding: utf-8 -*-
  2. from selenium import webdriver
  3. import time
  4. browser = webdriver.Chrome()
  5. browser.get("http://www.baidu.com")
  6. time.sleep(2)
  7. #########百度输入框的定位方式##########
  8. #通过id方式定位
  9. browser.find_element_by_id("kw").send_keys("selenium")
  10. browser.get("http://www.baidu.com")
  11. #通过name方式定位
  12. browser.find_element_by_name("wd").send_keys("selenium")
  13. browser.get("http://www.baidu.com")
  14. #通过tag name方式定位,可能找到多个
  15. #browser.find_element_by_tag_name("input").send_keys("selenium")
  16. #browser.get("http://www.baidu.com")
  17. #通过class name 方式定位
  18. browser.find_element_by_class_name("s_ipt").send_keys("selenium")
  19. browser.get("http://www.baidu.com")
  20. #通过CSS方式定位
  21. browser.find_element_by_css_selector("#kw").send_keys("selenium")
  22. browser.get("http://www.baidu.com")
  23. #通过xphan方式定位
  24. browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
  25. ############################################
  26. browser.find_element_by_id("su").click()
  27. time.sleep(3)
  28. browser.quit()

CSS方式定位与jQuery的选择器非常类似。
jQuery API 中文手册
http://hemin.cn/jq/id.html

XPath 教程
http://www.w3school.com.cn/xpath/

通过browser.find_element_by_name或者find_element_by_tag_name等方式获取的元素可能有多个,我们可以通过for循环遍历:

  1. inputs = dr.find_elements_by_tag_name('input')
  2. for input in inputs:
  3. if input.get_attribute('type') == 'checkbox':
  4. input.click()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注