Python+Slenium用法
- 前提
- 一、定位
- 二、frame切换
- 三、浏览器操作
- 四、获取元素信息
- 五、鼠标操作
- 六、键盘操作
- 七、基本操作
- 八、等待
前提
from selenium import webdriver
driver = webdriver.Chrome()
一、定位
selenium一共提供了八种定位方式,通过这些定位方式即可创建对象。
from selenium.webdriver.common.by import By #导包
driver.finfd_element(By.ID, 'id属性值')
driver.find_element(By.NAME, 'name属性值')
driver.find_element(By.CLASS_NAME, 'class属性值')
driver.find_element(By.TAG_NAME, 'html标签名称')
driver.find_element(By.XPATH, 'xpath表达式')
driver.find_element(By.CSS_SELECTOR, 'css表达式')
driver.find_element(By.LINK_TEXT, '文本信息')
'''
1、只能定位 a 标签
2、元素内容必须为全部匹配,不能只写一部分
3、如果想写一半,就用 partial_link_text ,但必须唯一关键词
4、如果有多个,不是唯一,则返回第一个
'''
二、frame切换
进入frame有几种方法:
1、index:传入整形的参数,从 0 开始
driver.switch_to.frame(0)2、id : frame 的 id
driver.switch_to.frame(“id”)3、name : frame 的name
driver.switch_to.frame(“name”)4、WebElement :传入 selenium.webelement 对象
driver.switch_to.frame(driver.find_element(By.TAG_NAME(‘iframe’)))
# 第一,创建frame对象
ele = driver.find_element(By.XPATH, 'xpath信息')
#第二,传入frame对象,切换到对应frame中
'''
1、可直接传入frame 的 id、name 等信息
2、可直接传入frame 的 frame编号,第一个编号为 0
3、若存在frame 嵌套,需要一层层进入
'''
driver.switch_to.frame(ele)
#第三、退出当前frame
driver.switch_to.default_content()
driver.switch_to.parent_frame() #切换到父级frame
三、浏览器操作
''' 最大化窗口 '''
driver.maximize_window()
''' 设置浏览器窗口大小 '''
driver.set_window_size(width=00, height=00)
''' 设置窗口位置 '''
driver.set_window_position(x=00, y=00)
''' 后退 '''
driver.back()
''' 前进 '''
driver.forward()
''' 刷新 '''
driver.refresh()
''' 关闭当前页面 '''
driver.close()
''' 关闭所有页面 '''
driver.quit()
''' 获取当前页面 title '''
print(driver.title)
''' 获取当前页面 URL '''
print(driver.current_url)
四、获取元素信息
''' 获取元素的大小和文本 '''
print(driver.find_element(By.XPATH, 'xpath')).size
print(driver.find_element(By.XPATH, 'xpath')).text
''' 获取超文本链接 '''
driver.find_element(By.XPATH, 'xpath').get_attribute("herf")
''' 判断元素是否 可见、可用、是否被选中 '''
driver.find_element(By.XPATH, 'xpath').is_displayed()
.is_enabled()
.is_selected()
五、鼠标操作
使用步骤
1、实例化对象
action = ActionChains(driver)
2、通过对象调用函数
3、通过 perform() 执行操作
from selenium.webdriver import ActionChains #导包
action = ActionChains(driver) #实例化对象
''' 右击鼠标 '''
action.context_click(driver.find_element(By.XPATH, 'xpath')).perform()
#或者
ActionChains(driver).context_click(driver.find_element( ))
''' 双击鼠标 '''
action.double_click(driver.find_element(By.XPATH, 'xpath')).perform()
''' 移动鼠标,悬停到某个元素 '''
action.move_to_element(driver.find_element(By.XPATH, 'xpath')).perform()
''' 拖拽事件 '''
source = driver.find_element(By.XPATH, 'xpath')
target = driver.find_element(By.XPATH, 'xpath')
action.drag_and_drop(source, target).perform()
六、键盘操作
模拟键盘上一些按键或组合键的输入
from selenium.webdriver import Keys #导包
driver.find_element(By.XPATH, 'xpath').send_keys(Keys.Back_SPACE)
Keys.SPACE #空格
Keys.ESCAPE
Keys.ENTER #回车
Keys.CONTROL, 'a' #ctrl+a
'c'
七、基本操作
driver.find_element(By.XPATH, 'xpath').click() #点击
driver.find_element(By.XPATH, 'xpath').send_keys("") #输入
driver.find_element(By.XPATH, 'xpath').clear() #清空
driver.find_element(By.XPATH, 'xpath').submit() #提交表单
八、等待
三种等待方式:显示等待、隐式等待、强制等待
1、显示等待
#导包
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
'''
显示等待:
1、在代码中自定义等待条件,当条件发生时才继续执行代码
2、WebDriverWait 配合 until() 和 until_not()方法,根据判断条件进行等待,通常配合
expected_conditions 模块使用
3、程序每隔一段时间(默认0.5秒)进行条件判断,如果条件成立,则执行下一步,否则继续等待,直到超时
格式:
WebDriverWait(driver, 超时时间, 轮询时间).until(等待条件)
WebDriverWait(driver, 超时时间, 轮询时间).until_not(等待条件)
'''
WebDriverWait(driver, 10, 1).until(expected_conditions.element_to_be_clickable((By.XPATH, 'xpath')))
#然后下一步
2、隐式等待
'''
隐式等待:
1、每当 driver 执行动作时,暂停程序直到满足 driver 执行条件,若暂停时间超出设置的时间n秒,则触发异常
2、隐式等待为全局配置,设置一次即可
格式:
driver.implicitly_wait(n) 单位为秒
'''
driver.implicitly_wait(20)
3、强制等待
'''
强制等待:
强制暂停程序运行,等待 n 秒后继续执行后续代码
格式:
time.sleep(n) 单位为秒
'''
time.sleep(3)