selenium自动化-8种定位方法
安装:
webdriver驱动与浏览器版本需要对应
可参照:
https://www.cnblogs.com/JHblogs/p/7699951.html
http://chromedriver.storage.googleapis.com/index.html
基本语句:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
定位:
1、find_element_by_id()方法通过id属性来定位元素
2、find_element_by_name()方法通过name属性来定位元素
3、find_element_by_class_name()方法通过class属性来定位元素
4、find_element_by_tag_name()方法通过tag name来定位元素
5、find_element_by_link_text()方法通过标签对之间的文本信息来定位元素
6、find_element_by_partial_link_text()方法通过元素标签对之间的部分文本信息来定位元素
7、xpath定位:
利用元素属性定位:find_element_by_xpath("//input[@id='kw']")
//表示当前页面某个目录下
input表示定位元素的标签
[@id='kw']表示这个元素的id属性值等于kw
div[2]表示当前层级下的第二个div标签
层级与属性结合
find_element_by_xpath("//span[@class='bg s_ipt_wr']/input")
span[@class='bg s_ipt_wr']通过class属性定位到父元素,后面/input就表示父元素下面的字元素,如果父级没有可利用的属性值,那么可以继续向上查找“爷爷”元素
使用逻辑性运算符
find_element_by_xpath("//input[@id='kw'and@class='su']/span/input")表示通过id和class两个属相唯一标识这个元素
8、CSS定位
CSS是一种语言,用来描述HTML和XML。
通过class属性定位
find_element_by_css_selector(".s_ipt")
通过id属性定位
find_element_by_css_selector("#kw")
通过标签名定位
find_element_by_css_selector("input")
通过父子关系定位
find_element_by_css_selector("span>input")
通过属性定位
find_element_by_css_selector("[name='kw']")
组合定位
find_element_by_css_selector("form.fm>span>imput.s_ipt")
实例:登录QQ邮箱
from selenium import webdriver
import time
driver = webdriver.Chrome()
qq_html = "https://mail.qq.com/cgi-bin/loginpage"
driver.get(qq_html)
time.sleep(5)
driver.switch_to.frame("login_frame")
driver.find_element_by_id("u").send_keys("XXX")
driver.find_element_by_id("p").send_keys("XXX")
driver.find_element_by_class_name("btn").click()