python-selenium-等待、iframe、window、alert处理

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

option = webdriver.ChromeOptions()
option.add_experimental_option('detach', True)
driver = webdriver.Chrome(service_log_path="log.txt", executable_path="/Users/zhanghui04/Downloads/chromedriver",
chrome_options=option)
driver.get("http://www.baidu.com")
# 强制等待
time.sleep(2)
# 隐性等待 implicitly_wait() 最长等待,整个driver会话周期内只需要设置一次
driver.implicitly_wait(10)
# 显性等待 WebDriverWait类 WebDriverWait(会话对象driver, 最大时长,轮询周期)
# presence_of_element_located 元素存在
# visibility_of_element_located 元素出现
WebDriverWait(driver, 10, 1).until(EC.visibility_of_element_located((By.ID, 'kw')))
driver.maximize_window() # 窗口最大化

driver.find_element(By.XPATH, '//*[@id="u1"]//a[@name="tj_login"]').click()

# 切换iframe,方式一 == 进入另外一个HTML
driver.switch_to.frame("name值")
driver.switch_to.frame(driver.find_element(By.XPATH, ''))

# 切换iframe,方式二:等待iframe存在,可见
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("name值"))
# 从iframe当中回到默认的页面当中
driver.switch_to.default_content()
driver.switch_to.parent_frame()

# 窗口切换
# step1 获取窗口的总数和句柄 新打开的窗口位于最后
handles = driver.window_handles
print(handles)
# 当前窗口的句柄
print(driver.current_window_handle)
# 切换句柄
driver.switch_to.window(handles[-1])
# 等待新窗口打开
# 对比窗口总数大小,参数为引起新窗口打开之前的句柄
WebDriverWait(driver,10).until(EC.new_window_is_opened(driver.window_handles))


# 判断alert出现
WebDriverWait(driver,10).until(EC.alert_is_present())
# alert切换 不是HTML页面元素
alert = driver.switch_to.alert
alert.accept() # 确认
alert.dismiss() # 取消
print(alert.text) # 弹框内容


time.sleep(2)
driver.quit()
posted @ 2022-04-02 13:33  狒狒桑  阅读(207)  评论(0)    收藏  举报