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()
posted @ 2019-04-19 16:50  luck_chao  阅读(727)  评论(0编辑  收藏  举报