selenium+python CSS定位(05)

2017-08-21  测试窝初学者 

selenium+python CSS定位

前言

当我们需要定位元素时,可能第一时间想到的就是使用xpath去定位。在这一节中,我们主要介绍CSS定位,通过学习CSS定位,然后结合前面章节xpath定位方法,然后结合使用,才能更高的满足工作的需要(官方推荐使用CSS定位,CSS定位比较快)。其实CSS定位,也就是通过CSS选择器进行定位,那么我们需要有一些CSS选择器的知识才能更高的理解CSS定位。

请大家跳到W3school学习CSS,个人认为学习CSS选择器部分就好。

我们以测试窝登录页面为例。


1)元素选择器定位

import time

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("https://www.testwo.com/user/login")

# 查找form元素下div元素下div元素下div元素下的input元素(这个说明很绕呀,其实是通过后代选择器去定位)

driver.find_element_by_css_selector("form div div div input").send_keys("testwo")

time.sleep(2)

# #查找form元素下div元素下div元素下div元素下的input元素(这个说明很绕呀,其实是通过子元素选择器去定位)

driver.find_element_by_css_selector("form div div div>input").send_keys("测试窝")

time.sleep(2)

driver.quit()


2)类选择器定位

由于测试窝登录界面没有class(类)属性,那么我们以测试窝首页的搜索按钮为例。

import time

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("https://www.testwo.com/")

#查找类名为btn的节点,然后进行点击(测试窝首页只有一个类名为btn)

driver.find_element_by_css_selector(".btn").click()

time.sleep(2)

driver.quit()


3)id选择器定位

import time

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("https://www.testwo.com/user/login")

#查找id为inputName的节点,然后输入testwo

driver.find_element_by_css_selector("#inputName").send_keys("testwo")

time.sleep(2)

driver.quit()


4)属性选择器定位

import time

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("https://www.testwo.com/user/login")

#查找属性name="name"的节点,然后输入testwo

driver.find_element_by_css_selector("*[name='name']").send_keys('testwo')

time.sleep(2)

driver.quit()


5)索引定位

下面列子中的CSS索引定位可能不是很直观,nth-child(2)为什么定位的是id为’user’的form元素的第一个div元素,其实nth-child(2)定位属于其父元素的第二个子元素为div的元素,而不是第二个div元素(例子中的form元素下的第三个元素)

import time

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("https://www.testwo.com/user/login")

# 查找id为user下第二个元素为div元素下的input节点(input为后代元素),然后输入testwo

driver.find_element_by_css_selector("#user > div:nth-child(2) input").send_keys("testwo")

time.sleep(2)

driver.quit()

总结:xpath定位和css定位中,我们大部分例子都为单个方法的定位,主要为了理解selenium定位的方法,在实际使用中,根据需要把各种定位方法结合到一起使用过才能更好的定位。


声明:欢迎大家加入测试窝官方交流群(316016449),如上述内容存在错误,请帮忙指出,我会及时更正。


617°/6166 人阅读/1 条评论 发表评论

木头  2017-09-22

那么这些个定位方法在实际工作中那个比较使用,比较好维护呢


登录 后发表评论