selenium 常用操作方法
Selenium 常用操作方法
1.初始化浏览器操作
- from selenium import webdriver
- driver=webdriver.Chrome()
2.浏览器最大化操作
- driver.maximize_window()
3.设置浏览器窗口大小
- driver.set_window_size(500,780)
4.关闭浏览器
- driver.quit()
5.访问一个页面:
- driver.get(url)
6.获取页面的标题
- driver.title
7.关闭当前页面
- driver.close()
8.元素对象获取
----------------------------------------------方式一---------------------------------------
ele=driver.find_element_by_xxx('定位表达式') 获取匹配到的第一个元素
ele = driver.find_elements_by_xxx('表达式') 获取匹配到的全部元素,得到一个列表
-------------------------------------------方式二---------------------------------------------
from selenium.webdriver.common.by import By
el = driver.find_element(By.ID,'表达式')
--------------------------------------方式三----------------------------------------------------
from selenium.webdriver.common.by import By
search = (By.ID,'表达式')el = driver.find_element(*search) # 元组解包
9.获取元素的文本内容
- ele.text
10.获取元素的某个属性
- ele.get_attribute('属性名称')
11.元素的输入操作
- ele.send_keys('文本')
12.元素的点击操作
- ele.click()
13.clear() 清除文本
- ele.clear()
等待操作
1.强制等待
- sleep(秒) 通常作为辅助方式 弊端:不够智能
from time import sleep
sleep(5)
2.隐形等待
- implicitly_wait(等待上限)
- 等待的条件: 元素找到
- 特点: 1.有等待上限
2.在等待上限时间内,只要元素找到了,就不再等待。
3.全局性的等待。只需要加一次。driver.implicitly_wait(10)
设置最长等待时间,在这个时间内只要有个时间点加载完成,则执行下一步代码(整个driver 会话周期内,设置一次即可,全局都可用)
from selenium import webdriver
driver=webdriver.Chrome()
driver.get('https://ke.qq.com/')
driver.maximize_window() # 窗口最大化
driver.implictly_wait(30)#等待时间30s
driver.find_element_by_id('js_login').click()
3.显性等待
WebDriverWait等待(等待上限,轮询时间(0.5)) + 条件expected_condtions
使用webdriverwait 类和expected_conditions 模块
明确等到某个条件满足之后,再去执行下一步操作
程序每隔xx 秒看一眼,如果条件成立了,就执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。
WebDriverWait(driver,30).until(条件)
WebDriverWait 类: 显性等待类 WebDriverWait(driver,等待时长,轮询周期).until/until_not(判断条件)
until 方法: 直到满足xxx 条件,就不等待了 until_not 方法: 直到不满足xxx 条件,就不等待了
- 使用之前需要先引入库
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
- 确定元素的定位表达式 web_loc = 'xx'
- 调用webdriverWait 类设置等待总时长,轮询周期。
WebDriverWait(driver,总时长,轮询周期).until(判断条件)
- 使用expected_confitions 对应的方大生成判断条件 EC.方法名(定位方式,定位表达式)
EC.presence_of_element_located(By.ID,web_x x表达式)
expected_conditions 里常用的方法:
presence_of_element_located 元素存在
visibility_of_element_located 元素可见
invisbility_of_element_located 元素不可见
text_to_be_present_in_element 元素的文本展示出来
new_window_is_opened 新窗口打开
visibility_of_element_located 元素可见
invisbility_of_element_located 元素不可见
text_to_be_present_in_element 元素的文本展示出来
new_window_is_opened 新窗口打开
代码实例1:
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.Common.by import By
driver = webdriver.Chrome()
login=(By.ID,'kw')
login_id = WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located(login)
代码实例2:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.Common.by import By
driver = webdriver.Chrome()
loc = (By.XPATH,'//a[text()='腾讯课堂']')WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
wait = WebDriverWait(driver,10)
wait.until(EC.visibility_of_element_located(loc))
wait.until(EC.visibility_of_element_located(loc))

浙公网安备 33010602011771号