Web自动化成长之路:selenium中三种等待方式/三大切换操作

         前言:selenium中三种等待方式/三大切换操作指的是什么呢?其实就是三种等待方式、三种切换窗口方式,具体如何使用呢,我们接下来一起看看吧Web自动化成长之路:selenium中三种等待方式/三大切换操作_第1张图片

一、三大等待方式

—— 强制等待

强制等待:强制等待多少秒(单位)

import time
time.sleep(3)

——隐形等待

隐形等待:不做用户感知的等待,等待页面元素加载完成后结束等待

#只能用来等待元素出现
#启动浏览器,只需要设置一次
driver.implicitly_wait(5) #单位秒

——显性等待

#等待的条件:直到页面的标题当中包含“学习Python”
#wait....until....title_contains("学习Python")
#时间超出了,就会报错

——显性等待—等待元素加载

from selenium.webdriver.support.wait import WebDriverWait  ---导入显性等待库
from selenium.webdriver.support import expected_conditions  ----导入显性条件库

locaror =  ['id','kw']##要传的元素
elem = wait.until(expected_conditions.presence_of_all_elements_located(locaror))#加载元素

——显性等待—等待元素可见

from selenium.webdriver.support.wait import WebDriverWait  ---导入显性等待库
from selenium.webdriver.support import expected_conditions  ----导入显性条件库

locaror =  ['id','kw']
elem = wait.until(expected_conditions.visibility_of_all_elements_located(locaror)) #等待元素可见

——显性等待—等待元素可被点击

from selenium.webdriver.support.wait import WebDriverWait  ---导入显性等待库
from selenium.webdriver.support import expected_conditions  ----导入显性条件库

locaror =  ['id','kw']
elem = wait.until(expected_conditions.element_to_be_clickable(locaror)) #等待元素可以被点击

二、三大等待方式

a) 句柄-窗口切换

1.切换窗口需要句柄---句柄相当于窗口的ID

2.打印所有句柄,显示是列表,列表中最后一个ID就是最新打开的窗口
print(drvice.window_handles)

3.将窗口的句柄传进去
drvice.switch_to.window(drvice.window_handles[-1])  #这里-1就是取下标,倒数第一个窗口就是最新打开的窗口

——通过句柄-窗口切换示例:

例子:
from  selenium import webdriver
import  time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

drvice = webdriver.Chrome()
drvice.implicitly_wait(10)
drvice.get("http://www.baidu.com")
elem = drvice.find_element("id","kw")
elem.send_keys("浩仔")
elem.submit()

drvice.find_element_by_link_text("京东").click()

time.sleep(5)
#切换窗口
#输入窗口的句柄传进去
print(drvice.window_handles)
drvice.switch_to.window(drvice.window_handles[-1])
time.sleep(5)
print(drvice.title)

——显性等待-窗口切换:

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions


wait.until(expected_conditions.new_window_is_opened(all_handles))#打开新窗口,当获取当前所有窗口句柄

——显性等待-窗口切换示例:

例子:


all_handles = drvice.window_handles#获取当前所有窗口句柄,这个代码一定要先放到新窗口打开前
drvice.find_element_by_link_text("京东").click()

#显性的等待,等待新窗口出现
wait = WebDriverWait(drvice,2)#初始化等待器,等待2S
wait.until(expected_conditions.new_window_is_opened(all_handles))#打开新窗口,当获取当前所有窗口句柄

b) iframe内嵌网页切换

——进入(切换)iframe:

进入iframe,需要的三种标识:

提供iframe的标识:1.index 2.name 3.Webelement

driver.switch_to.frame("iframeResult")#通过name去查找

iframe在网页中标识:

Web自动化成长之路:selenium中三种等待方式/三大切换操作_第2张图片

——进入iframe后退出:

#退回主界面
driver.switch_to.default_content()  --如果一直不退出 就一直在iframe页面里面了



#退回父级iframe——如果有多层iframe可以使用此方法
driver.switch_to.parent_frame()

——iframe切换:显性等待

WebDriverWait(drvice,5).until(expected_conditions.frame_to_be_available_and_sitch_to_it(iframe))

b) 切换至alert:弹窗

my_al = driver.switch_to.alert     #切换到alert,点击确定,没有括号,也没有传参数,全局只有一个

my_al.accept()#点击确定

my_al.dismiss()#点击取消

——alert切换:显性等待

WebDriverWait(drvice,5).until(expected_conditions.alert_is_present)

你可能感兴趣的:(Web自动化,python,自动化,selenium,python)