UI自动化测试(下拉框(select类),多窗口,属性,类的方法实战)

一、下拉框(select类实现的)

在UI的自动化测试实战中,如果遇到下拉框的选择,我们可以使用Select类里面的方法来具体进行定位和解决。下面我们使用HTML的代码来写一个下拉框的页面交互,让大家从直观上知道下拉框的交互:

 如上是HTML的源代码,下面具体看看交互的信息,如下所示:

二、下拉框实战

1.select_by_index 索引的方式

select_by_index()的方法是通过索引的方式,如我们在上面的交互中,我们想选择下拉框中的Go语言,它是在第三位,那么它的索引就是2,因为索引是从0开始,下面的代码案例主要是以索引的方式来进行定位的,具体案例实战代码如下:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html')
t.sleep(2)
nr=driver.find_element_by_id('nr')
#针对Select进行实例化
select=Select(webelement=nr)
#索引方式
select.select_by_index(2)
t.sleep(3)
driver.quit()

2.select_by_value

select_by_value()方法是通过value的方式来进行定位,也就是标签中option里面的value属性来进行定位,比如我们还是Go语言,那么它的value的值就是“Go”,实战代码如下:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html')
t.sleep(2)
nr=driver.find_element_by_id('nr')
#针对Select进行实例化
select=Select(webelement=nr)
#value的方式
select.select_by_value('Go')
t.sleep(3)
driver.quit()

3.select_by_visible_text

select_by_text()的方法是通过文本信息来定位的,比如下拉框还是想选择Go,那么它的文本信息其实就

是“Go语言”,见这部分的案例实战代码:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('file:///Applications/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.html')
t.sleep(2)
nr=driver.find_element_by_id('nr')
#针对Select进行实例化
select=Select(webelement=nr)
#文本的方式
select.select_by_visible_text('Go语言')
t.sleep(3)
driver.quit()

4.拉勾网下拉框实战

但是拉勾网比较特殊,比如我们想在拉勾网搜索测试开发工程师,并点击学历要求的下拉框,选择本科,但我们发现,它的源代码中本大专本科等这些并没有写在select中,这时我们可以使用xpath来进行定位,具体实现的代码如下:

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.lagou.com/')
t.sleep(3)
driver.find_element_by_id('search_input').send_keys('测试开发工程师')
t.sleep(3)
#点击搜索按钮
driver.find_element_by_id('search_button').click()
t.sleep(3)
#点击学历要求
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/span').click()
t.sleep(3)
#选择本科
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/div/ul[2]/li[2]/span').click()
t.sleep(3)
driver.quit()
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

三、多窗口实战

实现从当前页面切换到另外一个新的页面,那么这个时候就需要使用到多窗口的操作和实战。其实坦白说,多窗口更多值的是两个窗口,如果是2个以上的窗口,是很难判断的,因为缺少判断的基准.

多窗口的解决步骤可以具体的描述为:

  • 先获取当前窗口句柄
  • 然后点击链接,打开一个新的窗口句柄
  • 然后获取到所有的窗口句柄
  • 循环所有的窗口句柄,判断如果不是当前窗口句柄,那么就切换到新的窗口句柄(如果当前的,就只能是新的窗口了)
  • 切换到新的窗口后,进行操作完成后,然后关闭新的窗口,再切换到当前窗口句柄

比如我们在百度首页,又打开了hao123页面,这时我们打开了两个窗口,我们想要对他们分别进行操作,用如下代码实现:

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
#首先打开百度
driver.get('http://www.baidu.com/')
#获取当前窗口(百度)
nowHandle=driver.current_window_handle
t.sleep(3)
#打开hao123的窗口
driver.find_element_by_partial_link_text('hao').click()
t.sleep(3)
#获取所有的窗口 (百度和hao123)
allHandles=driver.window_handles
t.sleep(3)
for item in allHandles:  #循环所有的窗口,我们把它赋item
    if item!=nowHandle:  #如果item不是百度的页面,就是hao123
        driver.switch_to.window(item) #切换到hao123
        t.sleep(3)
        driver.find_element_by_xpath('//*[@id="search"]/form/div[2]/input').send_keys('hao123')
        t.sleep(3)
        driver.close()
driver.switch_to.window(nowHandle) #切换到百度页面
t.sleep(3)
driver.find_element_by_id('kw').send_keys('百度')
t.sleep(3)
driver.quit()

四、webdriver浏览器属性

在WebDriver的测试框架中,WebDriver的类里面提供了很多的方法来专门针对浏览器的操作,这些方法都是在WebDriver的类里面,如测试被测试的浏览器地址,获取被测试的浏览器名称。下面针对这部分结合具体的案例实战来说明这些的案例应用实战。

1.获取测试的地址

from selenium import webdriver
driver=webdriver.Chrome()
'''获取测试的地址'''
driver.get('http://www.baidu.com')
driver.find_element_by_partial_link_text('hao').click()
#断言
assert driver.current_url.endswith('hao123.com/')==True #断言测试的地址是不是以'hao123.com/'结尾如果是返回True 如果不是返回False
driver.close()

2.获取当前页面代码

from selenium import webdriver
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
print('获取网页的源代码: ',driver.page_source)
driver.quit()

3.获取当前的Title

获取浏览器的title其实很简单的,比如百度的title它就是“百度一下,你就知道”,那么下面针对这部分进行具体的验证

from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
assert driver.title=='百度一下,你就知道'
driver.close()

4.前进和后退

from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
'''前进和后退'''
import time as t
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
t.sleep(3)
driver.get('http://www.bing.com')
t.sleep(3)
#后退
driver.back()
print('地址为:',driver.current_url)
t.sleep(3)
#前进
driver.forward()
print('地址为:',driver.current_url)
t.sleep(3)

5.刷新页面

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.find_element_by_id('sb_form_q').send_keys('python')
t.sleep(3)
driver.refresh()
t.sleep(3)
driver.close()

五、类的方法实战

在UI自动化测试中,WebElement的类里面提供了很多的方法可以进行调用,比如进行具体的清空的操作,和

获取一个文本输入框里面输入的关键字的信息。下面详细的演示下这部分的具体应用和案例实战。

1.clear()清空

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('asdfgh')
t.sleep(3)
#清空文本框内输入的信息
so.clear()
t.sleep(3)
driver.quit()

2.get_attribute():获取元素属性的值

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.lagou.com')
t.sleep(3)
driver.find_element_by_link_text('登录').click()
t.sleep(3)
login=driver.find_element_by_xpath('/html/body/div[3]/div[1]/div/div/div[2]/div[3]/div[1]/div/div[2]/form/div[1]/div/input')
print(login.get_attribute('placeholder'))
t.sleep(3)
driver.quit()

3.所有的input里面输入的值,都是在value的属性

 from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
so=driver.find_element_by_id('kw')
so.send_keys('admin')
print(so.get_attribute('value'))
driver.quit()

4.is_displayed()是否可见

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
aboutBaidu=driver.find_element_by_link_text('关于百度')
print(aboutBaidu.is_displayed())
driver.quit()

5.is_enabled():是否可编辑

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
so=driver.find_element_by_id('kw')
#is_enabled():是否可编辑
print(so.is_enabled())
driver.quit()

6.is_selected()针对单选按钮是否勾选

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.sina.com.cn/#')
autoLogin=driver.find_element_by_id('store1')
t.sleep(3)
print('是否勾选:',autoLogin.is_selected())#默认勾选,所以为真
t.sleep(3)
autoLogin.click() #取消勾选自动登录
t.sleep(3)
print('是否勾选:',autoLogin.is_selected())
driver.quit()

最后: 可以在我的VX公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的文章对你有所帮助的话,可以点赞三联支持一下哈   

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UI自动化中,下框的输入类型可以是input类型为search。input类型为search的下框通常用于搜索功能,用户可以在输入框中输入关键字,系统会根据关键字的匹配结果显示相关的选项。 使用UI自动化测试工具进行下框的测试时,可以通过模拟用户输入的方式来测试框的功能。首先,定位到下框的输入框元素,然后使用自动化测试工具提供的输入方法,将关键字输入到输入框中。输入完成后,可以使用工具提供的方法检查下框是否出现了与关键字相关的选项。如果下框出现了相关选项,则说明下框的搜索功能正常;如果没有出现相关选项,或者出现了错误的选项,则说明下框的搜索功能存在问题。 除了搜索功能的测试,还可以测试框的交互功能。可以通过选择下框中的某一选项来检查是否能正确地触发相应的操作。可以使用自动化测试工具提供的选取方法,选择某一选项,然后再使用工具提供的检查方法来验证是否成功触发了相应的操作。 总的来说,UI自动化测试框输入类型为search的功能主要包括搜索功能和交互功能的测试。通过模拟用户的输入和选择操作,可以验证下框的搜索功能是否正常,以及选择某一选项是否能正确触发相应的操作。这样可以确保下框在UI自动化测试过程中的正常使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值