iframe,window,alert切换


alert切换


from
selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC #期望条件 from selenium.webdriver.common.by import By #八种定位方式 ''' 1.创建浏览器驱动 2.访问网站 3.操作事件(如:点击登录按钮) 4.等待下一个事件出现之前需要等待(一般用显性等待) 5.等待结束后,操作下一个事件 6.需要操作iframe时需要先切换到iframe 7.切换结束后就可以操作事件 8.事件结束后想要退出iframe使用driver.switch_to.default_content '''import time #创建浏览器驱动 driver = webdriver.Chrome(service_log_path='E:chromes.log') # driver.fullscreen_window() driver.maximize_window() # driver.implicitly_wait(30) #访问一个网站 driver.get(r'C:UserswangweiPycharmProjectsTestStudy estaaadvssdvhhh.html') #等待弹窗的出现 WebDriverWait(driver,10,1).until(EC.alert_is_present()) #切换alert 你alert不属于html页面元素 return_alert = driver.switch_to.alert print("返回的信息:",return_alert.text) time.sleep(2) return_alert.accept()
window切换

from
selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC #期望条件 from selenium.webdriver.common.by import By #八种定位方式 ''' 1.创建浏览器驱动 2.访问网站 3.操作事件(如:点击登录按钮) 4.等待下一个事件出现之前需要等待(一般用显性等待) 5.等待结束后,操作下一个事件 6.需要操作iframe时需要先切换到iframe 7.切换结束后就可以操作事件 8.事件结束后想要退出iframe使用driver.switch_to.default_content ''' import time #创建浏览器驱动 driver = webdriver.Chrome(service_log_path='E:chromes.log') # driver.fullscreen_window() driver.maximize_window() # driver.implicitly_wait(30) #访问一个网站 driver.get('https://www.baidu.com/') #在百度输入框种输入柠檬班 driver.find_element_by_id("kw").send_keys("柠檬班") time.sleep(1) #点击确定 driver.find_element_by_id("su").click() #等待这个元素的显示 WebDriverWait(driver,5,1).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="3"]/h3/a/em[text()="柠檬班"]'))) time.sleep(1) ''' 这里点击百度贴吧之前要判断是不是窗口有被打开 先获取窗口句柄 ''' handles = driver.window_handles print(handles) #等待一秒钟后进入柠檬班百度贴吧 driver.find_element_by_xpath('//*[@id="3"]/h3/a/em[text()="柠檬班"]').click() ''' 等待新窗口的打开 ''' WebDriverWait(driver,20,1).until(EC.new_window_is_opened(handles)) handles2 = driver.window_handles #再次获取打开的窗口总数 print(handles2) ''' 方法二 window切换,获取打开窗口的句柄,就是是窗口的总数列表 handles = driver.window_handles print(handles) #获取当前窗口的句柄 print(driver.current_window_handle) #切换到弹出的最后一个窗口 driver.switch_to.window(handles[-1]) 等待关注显示,在操作 ''' driver.switch_to.window(handles2[-1]) WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.ID,'j_head_focus_btn'))) time.sleep(1) driver.find_element_by_id("j_head_focus_btn").click()

iframe切换

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC   #期望条件
from selenium.webdriver.common.by import By   #八种定位方式
'''
1.创建浏览器驱动
2.访问网站
3.操作事件(如:点击登录按钮)
4.等待下一个事件出现之前需要等待(一般用显性等待)
5.等待结束后,操作下一个事件
6.需要操作iframe时需要先切换到iframe
7.切换结束后就可以操作事件
8.事件结束后想要退出iframe使用driver.switch_to.default_content

'''
import time
#创建浏览器驱动
driver = webdriver.Chrome(service_log_path='E:chromes.log')
# driver.implicitly_wait(30)
#访问一个网站
driver.get('https://ke.qq.com/')

#点击登录按钮
driver.find_element_by_id("js_login").click()

WebDriverWait(driver,5,1).until(EC.presence_of_element_located((By.XPATH,'//a[@class="js-btns-enter btns-enter btns-enter-qq"]')))
print("okokokok")
# time.sleep(5)

driver.find_element_by_xpath('//a[@class="js-btns-enter btns-enter btns-enter-qq"]').click()

#切换到iframe
# WebDriverWait(driver,5,1).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//*[@class="qrlogin_img_out"]')))
'''
切换到iframe的两种方式,frame_to_be_available_and_switch_to_it这个函数已经包含switch_to.frame表示已经切换到iframe,后面只等接一个iframe地址参数就行
'''
WebDriverWait(driver,5,1).until(EC.frame_to_be_available_and_switch_to_it("login_frame_qq"))
'''
下面是另一种方式,
'''
# driver.switch_to.frame("login_frame_qq")
# time.sleep(3)
#点击账号密码登录
driver.find_element_by_id('switcher_plogin').click()

time.sleep(3)
#从iframe回到默认的页面种(一般就是f12最开始的html)
driver.switch_to.default_content()
print("我已经切换到主界面")
# driver.switch_to.parent_frame()  #返回父级iframe

#切换2
#获取所有窗口的总数和句柄
handles = driver.window_handles
原文地址:https://www.cnblogs.com/TKOPython/p/13550607.html