前言
想要实现UI自动化测试,那么我们首先得准确定位元素,然后才能对定位的元素进行各种操作,所以定位元素是前提,也是我们的重点。下面介绍七种常用的元素定位方法。
我们以测试窝登录界面为例,首先,打开测试窝登录界面。
1.鼠标放到用户名输入框,右键单击,然后点击检查
2.点击检查后会显示该输入框的相关元素,如上图。
1)通过元素ID定位
首先我们需要找到该元素的id,本例子中元素的id为inputName。其他定位方法同理
import time
from selenium import webdriver
driver = webdriver.Chrome()
#打开测试窝登录界面
driver.get("https://www.testwo.com/user/login")
#通过ID定位元素
#查找元素id为inputNmae的输入框,然后通过send_keys输入testwo
driver.find_element_by_id("inputName").send_keys("testwo")
#等待2秒,退出浏览器
time.sleep(2)
driver.quit()
2)通过元素name定位
import time
from selenium import webdriver
driver = webdriver.Chrome()
#打开测试窝登录界面
driver.get("https://www.testwo.com/user/login")
#通过name属性定位
#查找元素name为"name"的输入框,然后通过send_keys方法输入testwo
driver.find_element_by_name("name").send_keys("testwo")
#等待3s,然后退出浏览器
time.sleep(3)
driver.quit()
3)通过元素class定位
由于测试窝登录界面输入框并没有class属性,例子以为百度首页输入框为对象。
import time
from selenium import webdriver
driver = webdriver.Chrome()
#打开百度首页
driver.get("https://www.baidu.com/")
#通过class属性定位
#查找元素class为"s_ipt"的搜索框,使用send_keys方法输入testwo
driver.find_element_by_class_name("s_ipt").send_keys("testwo")
#等待3s,退出浏览器
time.sleep(3)
driver.quit()
4)通过元素名称(tag,可以叫标签吗?)定位
通过元素名称(该例子中就是)定位,由于一个页面会有很多相同的元素,那么使用元素名称去定位是不可靠的(不可靠你说毛线呀)。这里提到主要是想告诉大家selenium有提供该方法去定位啦。
下面的例子是定位不到(知道有这回事就行,请忽略这个例子)
import time
from selenium import webdriver
driver = webdriver.Chrome()
# #通过元素名称定位(例如input元素)
driver.get("https://www.testwo.com/user/login")
driver.find_element_by_tag_name("input").send_keys("testwo")
time.sleep(3)
driver.quit()
5)通过超链接定位
例子中都为超链接定位,不同点在于driver.find_element_by_partial_link_text是模糊匹配的
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.testwo.com/user/login")
#通过超链接定位
#查找文本为文章的超链接,然后使用click方法点击该元素
driver.find_element_by_link_text("文章").click()
#然后再回到上一页(点击前)
driver.back()
#查找文本中包含首的超链接,然后使用click方法点击该元素
driver.find_element_by_partial_link_text("首").click()
#等待3s,然后退出
time.sleep(3)
driver.quit()
6)通过xpath定位(重点)
xpath定位应该是测试中最常用的定位方式了吧,那么xpath是什么?
xpath是一种路径语言,在这里不详细介绍,首先教大家如何获取xpath,如下图可以获取到xpath路径(该方式只能获取到简单的路径),xpath我们会在后续的章节详细的介绍。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.testwo.com/user/login")
#通过xpath定位
# driver.find_element_by_xpath('//*[@id="inputName"]').send_keys("testwo")
#等待3s,然后退出
time.sleep(3)
driver.quit()
7)通过css定位(重点)
CSS定位也是比较常用的方式,并且比xpath更加简洁,如下图可以获取到CSS,我们会在后续的章节详细的介绍。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.testwo.com/user/login")
#通过css定位
driver.find_element_by_css_selector('#inputName').send_keys("测试窝")
time.sleep(3)
driver.quit()
声明:欢迎大家加入测试窝官方交流群(316016449),如上述内容存在错误,请帮忙指出,我会及时更正。