selenium+python元素定位(3)

2017-08-17  测试窝初学者 

前言

想要实现UI自动化测试,那么我们首先得准确定位元素,然后才能对定位的元素进行各种操作,所以定位元素是前提,也是我们的重点。下面介绍七种常用的元素定位方法。

我们以测试窝登录界面为例,首先,打开测试窝登录界面。 


1.鼠标放到用户名输入框,右键单击,然后点击检查

2.点击检查后会显示该输入框的相关元素,如上图。


1)通过元素ID定位

首先我们需要找到该元素的id,本例子中元素的idinputName。其他定位方法同理

import time

from selenium import webdriver

driver = webdriver.Chrome()

#打开测试窝登录界面

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

#通过ID定位元素

#查找元素idinputNmae的输入框,然后通过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),如上述内容存在错误,请帮忙指出,我会及时更正。


86°|848 人阅读|2 条评论

邓智群  2017-08-18

跟着你的节奏走,效果蛮好,哈哈


木头  2017-09-22

如果这就是UI自动化,那么真没想到如此简单。一语惊醒梦中人

登录 后发表评论