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