from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains # 模拟鼠标悬停
from selenium.webdriver.support.select import Select #用于定位下拉框
from selenium.webdriver.support.wait import WebDriverWait #导入WebDriverWait用于设置等待元素页面超时时间和轮询时间
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys #导入keys类用于模拟键盘的按键操作
'''
selenium:
一、UI自动化常用的控件操作
1.send_keys():文本框和上传文件
2.隐藏框定位=====鼠标悬浮:
ActionChains(driver).move_to_element(ele).perform() #move_to_element(ele)鼠标移动到指定元素,perform()执行操作
3.获取页面text文本信息
driver.find_element(By.XPATH,'//*[@id="s-top-left"]/a[2]').text
4.弹框操作:告警或者确认框:
4-1.ele.accept() 点击确认操作
4-2.ele.dismiss() 取消操作
4-3.ele.send_keys() 传文件或者输入内容
5.driver.quit() 关闭浏览器,并关闭启动ChromiumDriver时启动的ChromiumDriver可执行文件
6.driver.close() 关闭当前窗口
二、关于窗口的操作
1.get_window_size():获取窗口的大小
2.driver.title:获取窗口的title
3.获取窗口的句柄:
3-1.driver.current_window_handle 获取当前窗口句柄
3-2.driver.window_handles 获取所有窗口句柄 以列表形式返回
4.返回和刷新操作:
4-1.driver.back() 返回操作
4-2.driver.refresh() 刷新窗口
5.新开一个窗口页面:
5-1.get():原始页面访问新的一个页面
5-2.window.open:在原始的基础上在打开一个窗口访问
6.窗口切换,通过获取所有句柄,使用索引进行切换:
6-1.driver.switch_to.window(driver.window_handles[-1]) 基于第一个网页打开的第一个网页的句柄索引值永远为-1
6-2.driver.switch_to.window(driver.window_handles[1]) 基于第一个网页打开的最后网页的句柄索引值永远为1
7.下拉框select标签
7-1.第一种方法定位下拉框 直接定位下拉选择内容的xpath
7-2.第二种方法定位下拉框:
ele=driver.find_element(By.XPATH,'/html/body/table/tbody/tr[6]/td[2]/select') 定位下拉框
Select(ele).select_by_value('3') 选择第4个value值
Select(ele).select_by_visible_text('深圳大学') 通过选择下拉框文本内容
Select(ele).select_by_index(3) 通过索引进行定位,选择下拉内容
8.滚动条定位
1.编写js代码:js="window.scrollTo(0,1000)"
---->"window.scrollTo(0,1000)" 两个参数,第一参数表示滚动条向右移动的位置,第二个参数表示向下移动的位置
2.调用js代码:driver.execute_script(js)
三、selenium中的等待
1.强制等待:time中的sleep强制等待多少秒执行下面代码,不管页面元素是否加载出来---->sleep(1)
2.隐试等待:智能等待,作用于全局,最长等待10秒,在10秒内任意时间加载完成都会继续执行代码,超出等待时间抛出异常---->implicitly_wait(10)
3.显示等待:作用于指定元素,设置超时时间和间隔检测的时间,判断元素是否加载出来,超出等待时间抛出异常
3-1.until():等待元素加载
3-2.until_not():等待元素不加载
3-3.WebDriverWait(driver,10,1)---> 10:超时时间,1:间隔检测时间,超出时间还未加载出来抛出异常:
WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.ID,'kw')))
四、ifrom框定位
1.先定位iframe框---->iframe=driver.find_element(By.XPATH,'/html/body/div[3]/div[3]/div[1]/div/div[3]/div[1]/div[2]/iframe')
2.切换iframe框---->driver.switch_to.frame(iframe)
3.碰到多个iframe框时候,通过索引的方式定位iframe框,查看需要切换iframe标签在页面中第几个出现,通过索引来表示----->driver.switch_to.frame(0)
4.退出iframe():
4-1.切换焦点到默认帧----->driver.switch_to.default_content()
4-2.切换焦点到父上下文(上一级),如果是顶级上下文则保持不变----->driver.switch_to.parent_frame()
五、keys类,可以模拟键盘的一些按键操作
1.driver.find_element(By.ID,'kw').send_keys(Keys.BACK_SPACE) 类似于键盘的Backspace键(退格键)
2.driver.find_element(By.ID,'kw').send_keys(Keys.CONTROL,'a') a:全选
3.driver.find_element(By.ID,'kw').send_keys(Keys.CONTROL,'c') c:复制
4.driver.find_element(By.ID,'kw').send_keys(Keys.CONTROL,'x') x:剪切
5.driver.find_element(By.ID,'kw').send_keys(Keys.CONTROL,'v') v:粘贴
...
'''
driver = webdriver.Chrome() # 驱动谷歌浏览器
driver.get('www.baidu.com')
driver.maximize_window()
sleep(3)
driver.quit()
python笔记---->selenium
于 2024-05-28 19:44:37 首次发布