多测师拱墅校区肖sir_高级金牌讲师_实战定位

实战案例1:
知识点:文本框,密码框,点击,输入
场景一:
url:http://cms.duoceshi.cn/cms/manage/login.do

案例1:
知识点:text 、password、button、send_keys、click()
import time
d=webdriver.Chrome()
d.get(“http://cms.duoceshi.cn/cms/manage/login.do”)
time.sleep(2)
d.find_element_by_id(“userAccount”).send_keys(“admin”)
time.sleep(2)
d.find_element_by_id(“loginPwd”).send_keys(“123456”)
time.sleep(2)
d.find_element_by_id(“loginBtn”).click()

实战案例2:
知识点:submit 、a标签
普通按钮,链接,隐藏框
案例:
url:https://www.baidu.com/
场景1:
from selenium import webdriver
import time
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
time.sleep(2)
d.find_element_by_id(“kw”).send_keys(‘dcs’)
time.sleep(2)
d.find_element_by_id(“su”).click()

场景2:

from selenium import webdriver
import time
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
time.sleep(2)
d.find_element_by_link_text(“地图”).click()

场景3:
快捷键:ctrl+shift+c 查看隐藏元素
在这里插入图片描述
案例1:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
time.sleep(2)
gd=d.find_element_by_link_text(“更多”)
ActionChains(d).move_to_element(gd).perform()
time.sleep(2)
d.find_element_by_link_text(“百科”).click()

案例2:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
time.sleep(2)
d.find_element_by_id(“s-usersetting-top”).click()
time.sleep(2)
d.find_element_by_link_text(“高级搜索”).click()

=======================================
实战3:知识点:text
获取元素的文本:

d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
a=d.find_element_by_id(“s-usersetting-top”).text
print(a)
if a==‘设’:
print(‘ok’)
else:
print(‘no’)

=======================================
获取窗口title
知识点:title
获取窗口title,用于断言当前窗口是否打开 方法:driver.title
案例:当只有一个窗口的情况在这里插入图片描述

from selenium import webdriver
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
print(d.title) #百度一下,你就知道
在这里插入图片描述
场景2:
知识点:assert 断言 正确的就执行,错误就直接抛异常
from selenium import webdriver
d=webdriver.Chrome()
d.get(“https://www.baidu.com”)
s=d.title #百度一下,你就知道
assert s==“百度一下,你就”
print(‘ok’)
在这里插入图片描述

获取下拉框选项
引入类:Select() from selenium.webdriver.support.select import Select
实战网址:https://www.ctrip.com/
1)select_by_index() #通过下标定位下拉选项
2)select_by_value() #通过value属性值定位下拉选项
3)select_by_visible_text() #通过下拉文本内容内容
在这里插入图片描述
案例:
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://www.ctrip.com/”)
sleep(2)
d.maximize_window()
sleep(2)
wz=d.find_element_by_id(“J_roomCountList”)
Select(wz).select_by_index(4) #根据索引定位下拉框,索引从0开始
Select(wz).select_by_visible_text(“5间”)
Select(wz).select_by_value(“5”)#通过value值定位,

======================================================

弹框:
alert弹框:file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html
显示确认弹框:file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/enter.html
上传文件:file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/upload_file.html
显示输入型弹框:file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/prompt.html

案例1:alert弹框
单词:switch_to.alert
dismiss() 取消
accept() 确定
场景一:
d=webdriver.Chrome()
d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/alert%E5%BC%B9%E6%A1%86.html”)
sleep(2)
a=d.switch_to.alert
a.dismiss() #点击取消
sleep(4)
a.accept() #点击确定
案例2:
显示确认弹框

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/enter.html”)
sleep(2)
d.find_element_by_class_name(“alert”).click() #点击确认弹框
sleep(2)
a=d.switch_to.alert
a.dismiss()

案例3:输入型弹框
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/prompt.html”)
sleep(2)
d.find_element_by_class_name(“alert”).click()
sleep(2)
a=d.switch_to.alert
a.send_keys(“我是输入型弹框”)
sleep(3)
a.accept()

案例4:上传文件类型
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“file:///E:/dcs/two/selenium%EF%BC%888%EF%BC%89/html%E5%BC%B9%E6%A1%86/upload_file.html”)
sleep(2)
d.find_element_by_id(“file”).send_keys(r"D:\ls\dump.xml")

======================================================

16、iframe框处理
定位的元素在iframe标签里面,需要先进入iframe,再进行元素定位
进入iframe框方法:switch_to.frame()
退出iframe框方法:switch_to.default_content()
实战案例一:https://mail.163.com/
实战案例二:用QQ登录京东网站
方法:可以通过xpath,tag_name,索引等方法定位iframe框
注意:定位的iframe里面包含iframe,我们需要使用多次switch_to.frame(),从外一 层一层进入,
退出的时候使用一次switch_to.default_content()就可退出到最外面一层

场景一:
url:
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=46F2EC09C78F07D31C127AF76AB876D367F21286335C843CD944631CC87EDE057C4BD5A271512675DC3FD95ADECC3D77&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3Dbf613d92f0cb463da6500896d08475f8

在这里插入图片描述
案例:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=46F2EC09C78F07D31C127AF76AB876D367F21286335C843CD944631CC87EDE057C4BD5A271512675DC3FD95ADECC3D77&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3Dbf613d92f0cb463da6500896d08475f8”)
sleep(2)
wz=d.find_element_by_id(“ptlogin_iframe”)
d.switch_to.frame(wz) #进框,根据地址进框
d.find_element_by_link_text(“帐号密码登录”).click()
sleep(2)
d.switch_to.default_content() #退框
sleep(2)
d.find_element_by_link_text(“服务协议”).click()

案例2:根据索引位来进框和退框
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=46F2EC09C78F07D31C127AF76AB876D367F21286335C843CD944631CC87EDE057C4BD5A271512675DC3FD95ADECC3D77&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3Dbf613d92f0cb463da6500896d08475f8”)
sleep(2)
d.switch_to.frame(0) #进框,根据
d.find_element_by_link_text(“帐号密码登录”).click()
sleep(2)
d.switch_to.default_content() #退框
sleep(2)
d.find_element_by_link_text(“服务协议”).click()

案例3:通过tag_name定位
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&state=46F2EC09C78F07D31C127AF76AB876D367F21286335C843CD944631CC87EDE057C4BD5A271512675DC3FD95ADECC3D77&client_id=100273020&redirect_uri=https%3A%2F%2Fqq.jd.com%2Fnew%2Fqq%2Fcallback.action%3Fview%3Dnull%26uuid%3Dbf613d92f0cb463da6500896d08475f8”)
sleep(2)
a=d.find_element_by_tag_name(‘iframe’)
d.switch_to.frame(a) #进框,根据
d.find_element_by_link_text(“帐号密码登录”).click()
sleep(2)
d.switch_to.default_content() #退框
sleep(2)
d.find_element_by_link_text(“服务协议”).click()

=============================================
滚动条定位 滚动条是由js代码编写的
方法:execute_script()
代码如下: js1=window.scrollTo(0,20000) #向下滚动20000px
driver.execute_script(js1)
js2=window.scrollTo(0,0) #从底部滚动到顶部
driver.execute_script(js2)
案例1:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://www.jd.com/”)
sleep(2)
js=‘window.scrollTo(0,10000)’
d.execute_script(js)
sleep(5)
js1=‘window.scrollTo(0,0)’
d.execute_script(js1)

案例2:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://www.jd.com/”)
sleep(2)
js=‘var d=document.documentElement.scrollTop=1000’
d.execute_script(js)
sleep(3)
js1=‘var d=document.documentElement.scrollTop=0’
d.execute_script(js1)
案例3:for循环滚动的次数

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
d=webdriver.Chrome()
d.get(“https://www.jd.com/”)
sleep(2)
n=0
while n<=10000:
n+=1000
js = ‘var d=document.documentElement.scrollTop=’+str(n)
d.execute_script(js)
sleep(2)

=============================================
Keys类 from selenium.webdriver.common.keys import Keys
删除单个字符:Keys.BACK_SPACE
全选:Keys.CONTROL,‘a’
剪切:Keys.CONTROL,‘x’
粘贴:Keys.CONTROL,‘v’
点击确定:Keys.ENTER
进阶:可以把相同的步骤封装在一个函数里面
案例:
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(2)
d.maximize_window()
sleep(2)
d.find_element_by_id(‘kw’).send_keys(“dcs”) #输入
sleep(3)
d.find_element_by_id(‘kw’).send_keys(Keys.CONTROL,‘a’) #全选
sleep(3)
d.find_element_by_id(‘kw’).send_keys(Keys.CONTROL,‘x’)#剪切
sleep(3)
d.find_element_by_id(‘kw’).send_keys(Keys.CONTROL,‘v’)#黏贴
sleep(3)
d.find_element_by_id(‘kw’).send_keys(Keys.ENTER) # 确认

封装:
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
def find_element(locator,*value):
sleep(2)
return d.find_element_by_id(locator).send_keys(*value)
if name == ‘main’:
find_element(‘kw’,‘duoceshi’)
find_element(‘kw’,(Keys.CONTROL,‘a’))
find_element(‘kw’,(Keys.CONTROL,‘x’))
find_element(‘kw’, (Keys.CONTROL, ‘v’))
find_element(‘kw’, (Keys.ENTER))

切换窗口:
场景一:两个窗口是覆盖的情况,title是当前页面
from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
d.get(“https://www.jd.com/”)
print(d.title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物
d.close()

==============================
场景2:
from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
url2=‘window.open(“https://www.jd.com/”)’
d.execute_script(url2)
print(d.title) #百度一下,你就知道
当前窗口在百度页面

============================
通过索引切换窗口
from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
url2=‘window.open(“https://www.jd.com/”)’
d.execute_script(url2)
print(d.title)
dqjb=d.current_window_handle #获取当前句柄
print(dqjb) #百度句柄:CDwindow-8A1A9B73C1CA27750A58F18704719022
syjb=d.window_handles #获取所有句柄
#[‘CDwindow-8A1A9B73C1CA27750A58F18704719022’, ‘CDwindow-36263130F12DF587400AEE33EEB69150’]
#两个窗口就是0,1
#三个窗口0,2,1
print(syjb)
d.switch_to.window(syjb[1])
sleep(3)
d.find_element_by_link_text(“你好,请登录”).click()

============================

场景三:同时打开3个窗口进时,索引的顺序(021)
from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
url2=‘window.open(“https://www.jd.com/”)’
d.execute_script(url2)
sleep(3)
url3=‘window.open(“http://cms.duoceshi.cn/cms/manage/login.do”)’
d.execute_script(url3)
print(d.title)
dqjb=d.current_window_handle #获取当前句柄
print(dqjb) #百度句柄:CDwindow-8A1A9B73C1CA27750A58F18704719022
syjb=d.window_handles #获取所有句柄
#[‘CDwindow-8A1A9B73C1CA27750A58F18704719022’, ‘CDwindow-36263130F12DF587400AEE33EEB69150’]
#两个窗口就是0,1
#三个窗口0,2,1
print(syjb)
d.switch_to.window(syjb[2])
sleep(3)
d.find_element_by_link_text(“你好,请登录”).click()

============================
场景:通过for遍历所有的句柄,根据抬头切换页面
from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.baidu.com/”)
sleep(3)
url2=‘window.open(“https://www.jd.com/”)’
d.execute_script(url2)
sleep(3)
url3=‘window.open(“http://cms.duoceshi.cn/cms/manage/login.do”)’
d.execute_script(url3)
print(d.title)
dqjb=d.current_window_handle #获取当前句柄
print(dqjb) #百度句柄:CDwindow-8A1A9B73C1CA27750A58F18704719022
syjb=d.window_handles #获取所有句柄
#[‘CDwindow-8A1A9B73C1CA27750A58F18704719022’, ‘CDwindow-36263130F12DF587400AEE33EEB69150’]
#两个窗口就是0,1
#三个窗口0,2,1
for i in syjb:
d.switch_to.window(i)
if ‘过期更新’ in d.title:
break
print(d.title)
d.find_element_by_id(“userAccount”).send_keys(“admin”)

============================================
场景四:

通过索引切换窗口

from selenium import webdriver
from time import sleep
d=webdriver.Chrome()
d.get(“https://www.jd.com/”)
sleep(3)
url2=‘window.open(“https://www.baidu.com/”)’
d.execute_script(url2)
sleep(2)
dqjb=d.current_window_handle #获取当前句柄
print(dqjb) #百度句柄:CDwindow-8A1A9B73C1CA27750A58F18704719022
syjb=d.window_handles #获取所有句柄
d.switch_to.window(syjb[1])
sleep(2)
d.find_element_by_link_text(“hao123”).click()
sleep(2)
print(d.title)
dqjb=d.current_window_handle #获取当前句柄
print(dqjb) #百度句柄:CDwindow-8A1A9B73C1CA27750A58F18704719022
syjb=d.window_handles #获取所有句柄
#[‘CDwindow-8A1A9B73C1CA27750A58F18704719022’, ‘CDwindow-36263130F12DF587400AEE33EEB69150’]
#两个窗口就是0,1
#三个窗口0,2,1
for i in syjb:
d.switch_to.window(i)
if ‘hao123’ in d.title:
break
print(d.title)
d.find_element_by_link_text(‘查IP’).click()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多测师软件测试培训师肖sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值