自动化测试学习-Day5-selenium的基本操作
创始人
2025-05-29 23:31:58
0

哈喽,大家好!

本人21年毕业,软件工程专业,毕业后一直从事金融行业的软件测试。

希望大家一起见证一名卑微测试的成长之路。

目录

一、元素的操作

二、查询元素信息

三、 浏览器的操作

四、 窗口操作

五、添加等待


一、元素的操作

(1)点击:click()

(2)模拟按键输入:send_keys()

(3)清除数据:clear()

(4)提交:submit()

代码如下:

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 搜索框输入csdn
driver.find_element(By.ID,'kw').send_keys("csdn")
# 清除搜索框内容
driver.find_element(By.ID,'kw').clear()
# 搜索框输入CSDN
driver.find_element(By.ID, 'kw').send_keys("CSDN")
# 点击百度一下进行提交,click和submit都可以
driver.find_element(By.ID,'su').submit()
driver.find_element(By.ID, 'su').click()

二、查询元素信息

(1)是否显示:is_displayed()
(2)是否启用:is_enabled()
(3)是否被选中:is_selected()   # 多用于复选框、单选框、输入框和选择元素中
(4)获取元素标签名:tag_name
(5)获取元素的尺寸和坐标:rect
(6)获取元素css值:value_of_css_property('color')
(7)获取文本内容:text
(8)获取特性或属性:get_attribute("value")

代码如下:

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
elem=driver.find_element(By.ID,'su')
print("是否显示:"+str(elem.is_displayed()))
print("是否启用:"+str(elem.is_enabled()))
print("是否被选中:"+str(elem.is_selected()))
print("标签名:"+elem.tag_name)
print("尺寸和坐标:"+str(elem.rect))
print("CSS属性:"+elem.value_of_css_property('color'))
# text多用于a标签
elem1 = driver.find_element(By.LINK_TEXT, '新闻')
print("文本内容:" + elem1.text)
print("属性name值:"+elem.get_attribute('value'))
driver.quit()

运行结果如下:

是否显示:True
是否启用:True
是否被选中:False
标签名:input
尺寸和坐标:{'height': 44, 'width': 108, 'x': 844, 'y': 188.39584350585938}
CSS属性:rgba(255, 255, 255, 1)
文本内容:新闻
属性name值:百度一下

三、 浏览器的操作

(1)获取标题:driver.title
(2)获取url:driver.current_url
(3)后退:driver.back()
(4)前进:driver.forward()
(5)刷新:driver.refresh()

代码如下:

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element(By.ID,'kw').send_keys('csdn')
driver.find_element(By.ID,'su').click()
# 获取标题
print("标题:"+driver.title)
# 获取url
print("当前页面url:"+driver.current_url)
# 后退
driver.back()
time.sleep(2)
#前进
driver.forward()
time.sleep(2)
# 刷新当前页面
driver.refresh()
time.sleep(2)
driver.quit()

运行结果如下:

标题:百度一下,你就知道
当前页面url:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=csdn&fenlei=256&rsv_pq=0xf933dba900015f0e&rsv_t=f935ai3JnvqmxX390nkytfNlPBcJcNWA8801vNriGM7BzCoVc0%2Fk%2BjTL9Y4b&rqlang=en&rsv_enter=0&rsv_dl=tb&rsv_sug3=4&rsv_sug1=1&rsv_sug7=100&rsv_btype=i&inputT=283&rsv_sug4=283

四、 窗口操作

(1)获取当前窗口的窗口句柄:original_window ==driver.current_window_handle
(2)创建新窗口并切换到新窗口:driver.switch_to.new_window('window')
(3)关闭窗口:driver.close()
(4)退出浏览器:driver.quit()
(5)获取窗口的大小:width = driver.get_window_size().get("width")
(6)height = driver.get_window_size().get("height")
(7)设置窗口的大小:driver.set_window_size(1024, 768)
(8)获取窗口的位置:x = driver.get_window_position().get('x')
                                      y = driver.get_window_position().get('y')
(9)设置窗口的位置:driver.set_window_position(0, 0)
(10)窗口最大化:driver.maximize_window()
(11)窗口最小化:driver.minimize_window()
(12)屏幕截图:driver.save_screenshot('./百度.png')

代码如下:

driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
original_window=driver.current_window_handle
# 创建新窗口并切换到新窗口
driver.switch_to.new_window('window')
# 获取窗口的大小
width=driver.get_window_size().get('width')
height=driver.get_window_size().get('height')
print("窗口的宽:"+str(width))
print("窗口的高:"+str(height))
# 设置窗口的大小
driver.set_window_size(1500,500)
# 获取窗口的位置
x=driver.get_window_position().get('x')
y=driver.get_window_position().get('y')
print("x坐标:"+str(x))
print("y坐标:"+str(y))
# 设置窗口的位置
driver.set_window_position(40,40)
# 窗口最大化
driver.maximize_window()
time.sleep(2)
# 窗口最小化
driver.minimize_window()
time.sleep(2)
# 关闭新窗口
driver.close()
# 返回原始页面
driver.switch_to.window(original_window)
# 创建新标签
driver.switch_to.new_window('tab')
time.sleep(2)
# 关闭该标签页
driver.close()
# 返回原始页面
driver.switch_to.window(original_window)
# 屏幕截图
driver.save_screenshot('./百度.png')
time.sleep(3)
# 退出浏览器
driver.quit()

运行结果如下:

窗口的宽:1050
窗口的高:670
x坐标:20
y坐标:20

五、添加等待

(1)强制等待:运行到这块都要等待,需要引入time模块, 单位为秒。

 time.sleep(3)

(2)显式等待:可以指定每多少秒,需要引入WebDriverWait模块,先创建一个等待对象,每1秒查询一次,直到某些条件满足,如果10秒该条件还没有满足,则报错。

wait=WebDriverWait(driver, timeout=10,poll_frequency=1)
wait.until(some_condition)

(3)隐式等待:隐式等待为全局等待,一般出现在driver的创建语句之后,整个页面的等待时间为10s,超过10秒没有加载出来则报错。

 driver.implicitly_wait(10)

代码如下:

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 显示等待
WebDriverWait(driver,10,1).until(ec.presence_of_element_located((By.ID,'kw')))
driver.quit()driver = webdriver.Chrome()
driver.get("https://www.csdn.net/")
# 隐式等待
driver.implicitly_wait(1)
driver.quit()driver = webdriver.Chrome()
driver.get("https://www.csdn.net/")
# 强制等待
time.sleep(3)
driver.quit()

注意:

报错:

TypeError: presence_of_element_located() takes 1 positional argument but 2 were given

解决:
presence_of_element_located()方法支持一个参数,传(By.ID,'kw')进去,而不是By.ID,'kw'

 一边学习,一边总结,如有问题,欢迎大家指正!

相关内容

热门资讯

这是一封发给西安小升初家长的邀... 秦学·伊顿交大校区4月9日晚上举办的小升初讲座圆满结束了,回顾讲座现场的瞬间,小编有一些小小的感动。...
小升初数学面谈题型归纳 小升初... 数学在小升初择校中的重要性可以说是毋庸置疑的。很多一线名校例如二中应元、六中珠江、广大附等都对数学情...
vue2+3 pinia v... 1. 为什么要学习vue1.官网https://v3.cn.vuejs.org/guide/migr...
防雷设计、防雷检测为什么选同为... 随着现代科技的不断发展,电子设备得到广泛应用,而雷电等自然灾害也越来越频...
最新或2023(历届)快乐的下...  今天下午,我去了隋唐遗址。那里好美丽;有小河;有草地,小河里有鱼,有虾。  我先说河,有的河水清澈...
最新或2023(历届)6年级数...  篇一  今天,妈妈给我出了一道题,题目是这样的:“一头牛可换6头猪,2头猪可换10只羊,三只羊可换...
本次小升初直升考试试卷分析这就... 还记得前几天预告的小升初直升考试吗?这次的考试对于小学六年级的孩子们来说,是非常重要的。家长朋友们也...
西安小升初528预录来了! 西... 相信大家这几天除了被各种各样的学校参观弄得有点晕,到底这参观是几个意思呢!是有暗示还是没暗示,其实这...
最新或2023(历届)认真积极...   今天妈妈带我去学英语,上课我认真听盘,积极的举手回答问题,下课后妈妈表扬了我,我很高兴。回到家我...
【js】多分支语句练习(2) 个人名片: 😊作者简介:一名大一在校生,w...
Git 的 Cherry-Pi... 1、什么是 Cherry-Pickcherry-pick 是 Git 版本控制工具中的一个命令&#x...
最新或2023(历届)观察日记...  1.  7月23日星期一  今天我从东北回来了,我迫不急待的去看我出发前种下的含羞草种子,都十天了...
多线程进阶学习01------... 开篇:为什么学习多线程 实事求是地讲,对于绝大多数研发人员,...
最新或2023(历届)观察日记...  1.  有一天,我和好朋友们到小河边捉鱼摸虾。忽然发现,阴天的时候小鱼都跳到半空中。这是为什么呢?...
最新或2023(历届)小学数学...   1.  果园里的苹果树是梨树的3倍,老王师傅每天给50棵苹果树20棵梨树施肥,几天后,梨树全部施...
最新或2023(历届)4年级数...  1.  今天上午,我按照爸爸让我写的“假期计划”,开始了复习数学、练习数学、加强数学的“启动仪式”...
最新或2023(历届)观察日记... 小绿豆  9月20日 星期三 晴  今天,老师让我们观察植物的生长过程,我选的是绿豆.我拿了十几粒绿...
最新或2023(历届)寒假日记...  篇一  前天下雪了。 鹅毛大雪飞啊飞啊,我看着窗外的景色,顿时感到好兴奋——“我又可以玩雪了!”我...
最新或2023(历届)教师节日... 1.  教师节就是今天,我非常想对老师说:"祝您节日快乐。”,我也想在您的窗前栽一株紫丁香,让它的香...
rustdesk-server... 1、rustdesk-server的中继服务器是什么原理? RustDesk是一个开源...