Selenium基本使用(三)隐藏框、获取文本、断言、切换窗口

1、定位文本框,密码框,按钮

案例一:

网站:过期更新

from selenium import webdriver

import time

dx=webdriver.Chrome()

dx.get("过期更新")

time.sleep(2)

dx.find_element_by_name("userAccount").send_keys("admin")

time.sleep(2)

dx.find_element_by_xpath('/html/body/div[2]/div/form/div[2]/input').send_keys(123456)

time.sleep(2)

dx.find_element_by_css_selector("#loginBtn").click()

2.链接,隐藏框

(1)链接 link_text

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

dx.find_element_by_link_text("网盘").click()

(2)隐藏框

ActionChains()括号中接当前浏览器对象

move_to_element()括号中接当前你要模拟悬停的具体元素位置

.perform()对当前的位置进行点击悬停(类似于鼠标放在上面的动作)''

案例1

from selenium import webdriver #导入selenium模块中的webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

wz=dx.find_element_by_link_text("更多")

ActionChains(dx).move_to_element(wz).perform()

time.sleep(2)

dx.find_element_by_link_text("健康").click()

案例2:

from selenium import webdriver #导入selenium模块中的webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

dx.maximize_window()

time.sleep(2)

wz=dx.find_element_by_id("s-usersetting-top")

ActionChains(dx).move_to_element(wz).perform()

time.sleep(2)

dx.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[3]/span').click()

通过点击:

from selenium import webdriver #导入selenium模块中的webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

dx.maximize_window()

time.sleep(2)

dx.find_element_by_id("s-usersetting-top").click()

time.sleep(2)

dx.find_element_by_link_text("高级搜索").click()

拓展:

ActionChains类(鼠标操作)

常用于模拟鼠标的行为,比如单击、双击、拖拽等行为

click(on_element=None) --- 鼠标单击

double_click(on_element=None) --- 双击

context_click(on_element=None) --- 右击

click_and_hold(on_element=None) --- 鼠标单击并且按住不放

drag_and_drop(source,target) --- 拖拽

drag_and_drop_by_offset(source,xoffset,yoffset) --- 将目标拖动到指定的位置

key_down(value,element=None) --- 按下某个键盘上的键

key_up(value,element=None) --- 松开某个键

move_by_offset(xoffset,yoffset) --- 鼠标从当前位置移动到某个坐标

move_to_element(to_element) --- 鼠标移动到某个元素

move_to_element_with_offset(to_element,xoffset,yoffset)

--- 移动到距某个元素(左上角坐标)多少距离的位置

perform() --- 执行链中的所有动作

release(on_element=None) --- 在某个元素位置松开鼠标左键

day:26 selenium------文本、if、assert、切换窗口

一.text 获取文本

(1)text 获取文本

eg:sz=dx.find_element_by_id("s-usersetting-top").text

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

dx=webdriver.Chrome()

dx.get("https://www.baidu.com")

time.sleep(2)

dx.maximize_window()

sz=dx.find_element_by_id("s-usersetting-top").text

print(sz)

(2)if 判断文本是否正常

from selenium import webdriver #导入selenium模块中的webdriver

from selenium.webdriver.common.action_chains import ActionChains

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("https://www.baidu.com") #通过get打开页面

time.sleep(2)

dx.maximize_window()

time.sleep(2)

sz=dx.find_element_by_id("s-usersetting-top").text

print(sz)

if sz=="设置":

print("ok")

else:

print("no")

二.title 标题

(1)重开窗口的标题都在第一个页面上

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title)

w="window.open('https://www.baidu.com')" 使用另开网页窗口

dx.execute_script(w)

print(dx.title)

time.sleep(2)

w="window.open('https://www.jd.com')"

dx.execute_script(w)

print(dx.title) 打印标题只能出现第一个页面标题

(2)通过get打开网页,覆盖的,标题就是打开的页面

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

dx.get("https://www.baidu.com")

print(dx.title) #百度一下,你就知道

time.sleep(2)

dx.get("https://www.jd.com")

print(dx.title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!

三.assert 断言

assert判断:正确的通过,执行下一步,失败就报错

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

js=dx.title

assert js=="过期更新"

print("ok")

四.切换窗口

(1)当页面出现两个窗口,可以根据索引切换,索引位0,1

获取当前句柄:jb=dx.current_window_handle

获取所有句柄:jbs=dx.window_handles

选择目标页面句柄:dx.switch_to.window(jbs[1句柄序号])

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

w="window.open('https://www.baidu.com')"

dx.execute_script(w)

print(dx.title) #过期更新

jb=dx.current_window_handle #获取当前句柄

print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB

jbs=dx.window_handles #获取所有句柄,返回一个列表

print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']

dx.switch_to.window(jbs[1]) #两个窗口索引 0,1

time.sleep(2)

dx.find_element_by_id("kw").send_keys(" 切换")

(2)当页面出现三个窗口,可以根据索引切换,索引位0,2,1

在Selenium中切换三个窗口以上的索引顺序是:第一个打开的窗口索引是0,其他窗口对应的索引顺序是:最后一个打开的窗口索引是1,剩余的窗口对应的索引依次是打开窗口顺序的倒序。

若开4个窗口则排序为:0、2、3、1

案例:切换最后的夜未眠 1

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

w="window.open('https://www.jd.com')"

dx.execute_script(w)

print(dx.title) #过期更新

w="window.open('https://www.baidu.com')"

dx.execute_script(w)

print(dx.title) #过期更新

jb=dx.current_window_handle #获取当前句柄

print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB

jbs=dx.window_handles #获取所有句柄,返回一个列表

print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']

dx.switch_to.window(jbs[1]) #两个窗口索引 0,1

time.sleep(2)

dx.find_element_by_id("kw").send_keys(" 切换")

案例2:

切换中间的窗口

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

w="window.open('https://www.jd.com')"

dx.execute_script(w)

print(dx.title) #过期更新

w="window.open('https://www.baidu.com')"

dx.execute_script(w)

print(dx.title) #过期更新

jb=dx.current_window_handle #获取当前句柄

print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB

jbs=dx.window_handles #获取所有句柄,返回一个列表

print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']

dx.switch_to.window(jbs[2]) #两个窗口索引 0,1

time.sleep(2)

dx.find_element_by_link_text("免费注册").click()

3.通过for ,判断title 切换窗口

from selenium import webdriver #导入selenium模块中的webdriver

import time

dx=webdriver.Chrome() #创建一个驱动谷歌浏览器的对象

dx.get("过期更新") #通过get打开页面

time.sleep(2)

print(dx.title) #过期更新

w="window. open('https://www.jd.com')"

dx.execute_script(w)

print(dx.title) #过期更新

w="window.open('https://www.baidu.com')"

dx.execute_script(w)

print(dx.title) #过期更新

jb=dx.current_window_handle #获取当前句柄,返回一个列表

print(jb) #CDwindow-B8A77F2921EDAA393A1436B9980D8CCB

jbs=dx.window_handles #获得所有句柄

print(jbs) #['CDwindow-B8A77F2921EDAA393A1436B9980D8CCB', 'CDwindow-C9672C1FE1CB891043BF910930A4F819']

for i in jbs:

dx.switch_to.window(i)

if "百度一下,你就知道" in dx.title:

break

print(dx.title)

dx.find_element_by_id("kw").send_keys("切换成功")

相关推荐
测试人社区—039218 分钟前
UI测试在DevOps流水线中的卡点设计:质量保障的智能防线
运维·驱动开发·测试工具·ui·ar·vr·devops
实时数据2 小时前
Selenium常用于网页爬取 为了提高爬取效率,可以采取以下优化措施:合理使用无头模式
selenium·测试工具·数据挖掘
zhaoyin19943 小时前
fiddler抓包工具使用
前端·测试工具·fiddler
实时数据3 小时前
网络爬虫已成为获取互联网数据的重要手段。Selenium 作为一种强大的自动化测试工具,
爬虫·selenium·测试工具
佟以冬4 小时前
Wireshark抓包基础
网络·测试工具·安全·网络安全·wireshark
实时数据4 小时前
优化 Selenium 使用文本挖掘在分析留言数据中提供了多种应用 如情感分析、主题建模、关键词提取和文本分类
selenium·测试工具
灵翼飞航科技有限公司5 小时前
无人机动力测试系统光电传感器原理及操作说明(二)
测试工具·无人机
灵翼飞航科技有限公司5 小时前
要完成无人机动力测试需要都需要准备什么?
测试工具·无人机
Wpa.wk6 小时前
curl-发送请求 和 tcpdump与wireshark的介绍
测试工具·wireshark·tcpdump·curl
霍格沃兹测试学院-小舟畅学20 小时前
Playwright企业级测试架构设计:模块化与可扩展性
人工智能·测试工具