1. 标签内部存在iframe,普通的方式无法直接定位到iframe内部的标签元素。需要切换;
定位iframe内部标签元素
selenium窗口操作
2. 一个浏览器对象,存在多个标签选项卡。需要切换。打开多个页面以后,不会自动的切换界面,因此需要通过判断来切换定位的窗口(每个窗口都有各自的编号)
定位iframe内部标签元素
登录QQ邮箱为列:
#import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox()
driver.get('https://mail.qq.com/')
# frame()查找和定位iframe框架的方法(switch_to)
driver.switch_to.frame(driver.find_element_by_id('login_frame'))
driver.find_element_by_id('switcher_plogin').click()
username = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_css_selector('#u'))
pwd = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_css_selector('#p'))
username.send_keys('123')
pwd.send_keys('123')
selenium窗口操作
#import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox()
driver.get('https://www.baidu.com/')
# 获取当前窗口的window
current_window = driver.current_window_handle
print(current_window, driver.title)
driver.find_element_by_link_text('新闻').click()
time.sleep(1)
current_window = driver.current_window_handle
print(current_window, driver.title)
driver.find_element_by_css_selector('.hdline0 .a3').click()
time.sleep(1)
***********切换窗口的过程*****************
current_window = driver.current_window_handle
#获取当前driver所定位的窗口
print(current_window, driver.title)
# 获取当前driver打开的所有窗口window
windows = driver.window_handles
print(windows)
#遍历后判断当前定位的窗口与新打开的窗口不同是,切换到新打开的窗口
for win in windows:
if current_window != win:
#win是心得窗口编号
driver.switch_to.window(win)
*************************************************
current_window = driver.current_window_handle
print(current_window, driver.title)
title = driver.find_element_by_class_name('h-title').text
print(title)
# 当前页面操作完毕,重新回到上一个页面
driver.close()
# 关闭当前页
driver.switch_to.window(current_window)
time.sleep(3)# 休眠3秒
driver.close() # 关闭当前driver操作的窗口,其他窗口不会关闭。
driver.quit() # 将driver浏览器对象退出,所有相关联窗口都会关闭。
火狐浏览器设置下载时不弹出窗口
profile = webdriver.FirefoxProfile()
profile.set_preference(“browser.helperApps.neverAsk.saveToDisk”,”application/octet-stream”)
driver = webdriver.Firefox(Firefox_profile=profile)