selenium模拟手机登陆:
from selenium import webdriver
import time
""" selenium模拟手机登陆 """
# 设置
mobilesetting={"deviceName": "iPhone X"}
chrome_options = webdriver.ChromeOptions() # 选项
chrome_options.add_experimental_option('mobileEmulation',mobilesetting) # 模拟手机
driver = webdriver.Chrome(chrome_options=chrome_options) # 配置参数
driver.set_window_size(400,800) # 设置浏览器大小
# driver.maximize_window() # 全屏显示
driver.get("http://www.baidu.com")
time.sleep(5)
driver.get("http://www.taobao.com")
time.sleep(5)
driver.back() # 后退
time.sleep(5)
driver.forward() # 前进
time.sleep(5)
driver.refresh() # 刷新
time.sleep(5)
driver.quit()
selenium鼠标操作 :
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
""" selenium鼠标操作 """
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
action = driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(action).perform() # 鼠标停留
ActionChains(driver).move_to_element(action).move_to_element(<element>) # 鼠标移动
ActionChains(driver).move_to_element(action).context_click() # 鼠标单击
ActionChains(driver).move_to_element(action).double_click() # 鼠标双击
ActionChains(driver).move_to_element(action).drag_and_drop(<element>) # 鼠标拖放
time.sleep(10)
driver.quit()
selenium键盘操作:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
""" selenium键盘操作 """
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(2)
# 模拟键盘输入“python”
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("kw").submit() # 提交表单
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a") # 模拟 ctrl+a
time.sleep(10)
driver.quit()
- Keys.BACK_SPACE:删除键
- Keys.SPACE:空格键
- Keys.TAB:Tab键
- Keys.ESCAPE:回退键
- Keys.ENTER:回车键
- Keys.CONTROL,”a”:组合键,Ctrl + A
- Keys.CONTROL,”x”:组合键,Ctrl + X
- Keys.CONTROL,”v”:组合键,Ctrl + V
- Keys.CONTROL,”c”:组合键,Ctrl + C
- Keys.F1:F1键
- Keys.F12:F12键
selenium 显式等待,隐式等待:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait # 等待一个元素加载完成
from selenium.webdriver.support import expected_conditions as EC # 设置等待条件
""" selenium 显式等待,隐式等待 """
driver = webdriver.Chrome()
# 隐式等待
driver.implicitly_wait(20) #
driver.get("http://www.baidu.com")
# 显式等待
# 显式等待 等待秒数 0.5秒检查一次可以不给,默认是0.5,属性名poll_frequency 检查频率
WebDriverWait(driver, 10, 1).until(EC.presence_of_element_located((By.ID, 'kw'))) # 传入tuple 或 list
隐式等待:此处的隐式等待是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间, 但是影响是全局的,每次Driver执行 找不到元素都会等待此处设置的时间, 假设某处将此值设置的太长,必须在执行完成之后还原回来,否则判断一个元素是否存在的时候,就会遇到很坑爹的问题。
显示等待:显示等待是表明某个条件成立后才执行获取元素的操作。也可以在等待的时候指定一个最大的时间,如果超过这个时间那么就抛出一个异常。显示等待应该使用selenium.webdriver.support.excepted_conditions
期望的条件和selenium.webdriver.support.ui.WebDriverWait
来配合完成。