selenium常用代码

from selenium import webdriver

# 1. 添加浏览器设置参数对象
options = webdriver.ChromeOptions()

# 2. 设置中文,与下载无弹窗指定路径
options.add_argument('lang=zh_CN.UTF-8')
prefs = { 'profile.default_content_settings.popups':0 ,'download.default_directory':'C:\\Users\\del'}
options.add_experimental_option('prefs',prefs)

# 3. 更换请求头
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')

# 4. 生成浏览器对象
driver = webdriver.Chrome("无头浏览器位置",chrome_options=options)
driver.get('链接')

# 5. 使用xpath定位元素与元素属性
# 元素定位
元素 = driver.find_element_by_xpath('xpath表达式')
元素 = driver.find_element_by_link_text('文本链接')
元素 = driver.find_element_by_partial_link_text()('部分文本链接')
# 元素文本属性值
元素.text
# 获取元素属性值
元素.get_attribute(属性)
# 为True为元素可见
元素.is_displayed()
# 为True为元素可操作
元素.is_enabled()

# 6. 控制浏览器窗口大小,像素点宽480高800显示
driver.set_window_size(480,800)

# 7. 前进(返回之前的网页)与后退
driver.forward()
driver.back()

# 8. 模拟浏览器刷新当前页面
driver.refresh()

# 9. 简单元素操作:清除文本、模拟输入、单击元素
元素.clear()
元素.send_Keys('输入的值')
元素.click()

# 10. 提交表单,例如输入之后的回车操作
元素.submit()

# 11. 鼠标事件
# 导入提供数表操作的ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
# 鼠标悬停
ActionChains(driver).move_to_element(元素).perform()
# 鼠标拖拽
ActionChains(driver).drag_and_drop(拖拽元素,目标元素).perform()
# 鼠标右击
ActionChains(driver).context_click(元素).perform()
# 鼠标双击
ActionChains(driver).double_click(元素).perform()

# 12. 键盘事件
from selenium.webdriver.common.keys import Keys
元素.send_keys(Keys.F12)

# 13. 当前界面url
driver.current_url

# 14. 显示等待:每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions 

element = WebDriverWait(driver,最长超时时长,检测的间隔时间默认0.5s).until(
                            expected_conditions.presence_of_element_located((By.ID,'kw'))
                            ) 
# 15. 隐式等待,操作没有定位到元素则等待10s抛出异常
driver.implicitly_wait(10)

# 16.多表单切换:遇到frame或者iframe表单嵌套页面,要定位内嵌页面上的元素
driver.switch_to.frame(id或者name或者定位的frame元素)
#    跳出当前一级表单
driver.switch_to.parent_frame()
#    跳到最外层页面
driver.switch_to.default_content()

# 17. 多窗口切换
driver.switch_to.window(driver.window_handles[0])

# 18. 警告框处理:接受警告框
driver.switch_to_alert().accept

# 19. 操作cookie
#     获取cookie字典
driver.get_cookies()
#     获取cookie值
driver.get_cookie(name)
#     写入cookie
driver.add_cookie(cookie字典)
#     删除cookie信息
driver.delete_cookie(name)
driver.delete_all_cookies()

# 20. 执行js
driver.execute_script(js)

# 21. 窗口截屏
driver.get_screenshot_as_file()

# 22. 关闭窗口
driver.close()

# 23. 退出:退出驱动以及关闭所有窗口
driver.quit()

# 24. 捕捉log
import logging
logging.basicConfig(level=logging.DEBUG)
Tags: