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("切换成功")

相关推荐
辣香牛肉面19 小时前
Wireshark v4.6.2 开源免费网络嗅探抓包工具中文便携版
网络·测试工具·wireshark
测试工程师成长之路1 天前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium
may_一一1 天前
xpath定位:selenium和playwrightAnt Design / 表单类页面)
selenium·测试工具
daopuyun2 天前
CNAS/CMA软件检测实验室源代码漏洞测试工具选型要求与比对
软件测试·测试工具·软件检测·cnas认可·cma认定
Wpa.wk2 天前
接口自动化测试 - 请求构造和响应断言 -Rest-assure
开发语言·python·测试工具·接口自动化
AI_56782 天前
Postman接口测试提速技巧:批量请求+智能断言实践
测试工具·lua·postman
Luminbox紫创测控2 天前
整车自然暴晒与全光谱阳光模拟老化相关性研究
测试工具
弹简特2 天前
【JavaEE06-后端部分】SpringMVC01-Spring MVC第一大核心URL 路由映射【建立连接】与 Postman 接口测试详解
java·spring boot·测试工具·spring·postman
0思必得02 天前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化