python+selenium(三)

本文详细介绍Selenium自动化测试工具的多种应用场景,包括操作单选按钮、复选框、自定义浏览器大小、断言页面标题、获取元素文字、验证控件状态、获取元素大小、模拟键盘操作、执行JavaScript以及鼠标右键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、点击单选按钮

本文介绍如何利用selenium中的方法去操作单选按钮(Radio Button)。

利用百度新闻页面两个单选按钮举例

默认是选择新闻全文,我试试在两者之前来回点击。

实际上,勾选一个单选按钮,也就是调用元素方法click()

我们利用for语句遍历这两个单选按钮,依次点击他们。

脚本代码如下:
 

# coding=utf-8
 
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://news.baidu.com')
driver.implicitly_wait(8)
 
for i in driver.find_elements_by_xpath("//*/input[@type='radio']"):
    i.click()

2、点击复选框

本文介绍Selenium中,如何操作复选 框-Checkbox,最终的方法还是click()。

本来想还是继续采用for语句来把所有的复选框勾选一遍,例如这样的场景:注册一个网站勾选身份或者职业的时候,由于没有找到合适的demo网站。这里还是以百度举例,登录时,勾选下次自动登录:

 

# coding=utf-8
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.implicitly_wait(8)
 
driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@name='memberPass']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@name='memberPass']").click()

3、自定义浏览器大小

本文来学习下如何通过Selenium方法,设置符合不同测试场景浏览器窗口大小。例如,你有一台机器,最大支持1366*768,你完全可以利用这个机器测试不同分辨率下的场景。

# coding=utf-8
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()        # 全屏
driver.get('https://www.baidu.com')
time.sleep(1)
print (driver.get_window_size())
 
driver.set_window_size(1280,800)  # 分辨率 1280*800
time.sleep(1)
print (driver.get_window_size()) 
 
driver.set_window_size(1024,768)  # 分辨率 1024*768
time.sleep(1)
print (driver.get_window_size())

4、断言页面标题

本文介绍一个Selenium中页面title断言方法,这个在基础篇中第一个完整的脚本有提到过,这个补充一下。

# coding=utf-8
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
time.sleep(1)
# 方法一
try:
    assert u"百度一下" in driver.title
    print ('Assertion test pass.')
except Exception as e:
    print ('Assertion test fail.', format(e))
# 方法二
if u"百度一下,你就知道" == driver.title :
    print ('Assertion test pass.')
else:
    print ('Assertion test fail.')
 
print (driver.title)

5、获取元素上面的文字

本文介绍如何通过Selenium方法来获取某一个元素的text属性值。在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配。例如,在一个登陆界面,如果不输入用户名和密码,直接点击登录,肯定会有相关错误提醒。这个错误,我们需要通过selenium抓取出来,和需求说明文档中的描述去进行匹配,如果匹配,测试成功,否则失败。
 

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
 
driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(6)
 
driver.get("http://www.baidu.com/")
time.sleep(1)
driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
time.sleep(1)
 
driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__submit']").click()
# 断言方法一
try :
    error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error' and text()='请您填写手机/邮箱/用户名']").is_displayed()
    print ("Test pass. the error message is display.")
except Exception as e:
    print ("Test fail.", format(e))
 
# 断言方法二,本文重点介绍方法
error_mes = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_8__error']").text
try:
    assert error_mes == u'请您填写手机/邮箱/用户名'
    print ('Test pass.')
except Exception as e:
    print ("Test fail.", format(e))

6、验证控件是否被选中

前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态。

还是以百度新闻举例:

由于这个"新闻全文"是默认被选中状态,我们需要用脚本去判断是否被选中。

相关代码如下:

# coding=utf-8
import time
from selenium import webdriver
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("http://news.baidu.com/")
time.sleep(1)
try:
    driver.find_element_by_xpath("//*[@id='news']").is_selected()
    print ('Test Pass.')
except Exception as e:
    print ('Test fail',format(e))

7、获取页面元素大小

本文介绍如何通过Selenium方法去获取页面元素的大小。这个场景是可能在需要测试的,例如在前端测试过程中,需要去测试某一个控件是否和设计大小保持一致。

这里用百度首页的“百度一下”这个按钮举例,打印出这个按钮的大小。

# coding=utf-8
import time
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://www.baidu.com/")
time.sleep(1)
search_btn = driver.find_element_by_id('su')
print (search_btn.size)

8、组合键--全选文字

本文开始介绍Selenium中Keys模块下的一些组合,或快捷键的使用。前面的一篇文章,介绍了如何新开一个tab,也是用到这块的知识。

本文介绍全选当前页面文字,快捷键是 Ctrl+a,主要还是用send_keys()方法输入组合键,这里用百度首页举例。

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
 
element = driver.find_element_by_tag_name('body')
element.send_keys(Keys.CONTROL + 'a')

9、组合键-退格键删除文字

前面一篇文章介绍了,常规清除文本输入框字符的方法clear(), 本文介绍

相关脚本代码如下,这里用百度首页搜索输入框举例:

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
 
element = driver.find_element_by_id('kw')
element.send_keys("Selenium automation")
time.sleep(1)
element.send_keys(Keys.CONTROL+'a')
element.send_keys(Keys.BACKSPACE)

10、鼠标右键

本文介绍如何使用Selenium中右键方法来操作网页元素。网页上有些元素是支持右键来触发新的菜单,这里找一个百度首页,百度logo的右键,查看图片动作来模拟这个场景。

问题拆分:

1. 打开百度首页,找到logo,右键鼠标

2. 移动到菜单,查看图像,然后点击

核心问题,如何右键操作,然后是如何选择查看图像这个菜单。在Selenium中,有一个ActionChains模块支持,右键,鼠标悬停,拖拽,双击等动作。我们可以通过键盘向下箭头来选择查看图像这个菜单,然后点击就可以达到目的。
 

# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
time.sleep(2)
 
element = driver.find_element_by_xpath("//*[@id='lg']/img")
actionChains = ActionChains(driver)
actionChains.context_click(element).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
#actionChains.context_click(element).send_keys('i').perform()
 

11、执行JavaScript

前面文章介绍了ActionChains下的鼠标悬停和右键操作,其实ActionChains还有其他方法,你可以 action = ActionChains,通过这,先初始化一个ActionChains实例对象,然后在action后面输入一个点号,查看支持哪些action方法。本文开始介绍如何执行JS脚本,会用两个例子说明。
 

# coding=utf-8
import time
from selenium import webdriver
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://www.baidu.com")
time.sleep(1)
 
driver.execute_script("window.alert('这是一个alert弹框。');") # 注意这里的分号是英文输入法的分号,不能用中文

示例二,执行js脚本来控制浏览器竖向滚动条

打开百度贴吧,然后拖动滚动条到左侧 “地区"

# coding=utf-8
import time
from selenium import webdriver
 
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://tieba.baidu.com/index.html")
time.sleep(1)
 
target_elem = driver.find_element_by_link_text("地区")
driver.execute_script("return arguments[0].scrollIntoView();",target_elem) # 用目标元素参考去拖动
#driver.execute_script("scroll(0,2400)") # 这个是第二种方法,比较粗劣,大概的拖动

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值