python 包之 selenium 自动化使用教程
source link: https://blog.51cto.com/autofelix/5141742
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
python 包之 selenium 自动化使用教程
原创二、初始化浏览器
Chrome 是初始化谷歌浏览器
Firefox 是初始化火狐浏览器
Edge 是初始化IE浏览器
PhantomJS 是一个无界面浏览器。
driver = webdriver.Chrome()
三、设置浏览器大小
maximize_window 最大化窗口
set_window_size 自定义窗口大小
driver = webdriver.Chrome()
driver.maximize_window()
四、访问页面
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
五、定位元素
通过元素id定位
- 定位一个元素:find_element_by_id()
- 定位多个元素:find_elements_by_id()
通过元素name定位
- 定位一个元素:find_element_by_name()
- 定位多个元素:find_elements_by_name()
通过xpath表达式定位
- 定位一个元素:find_element_by_xpath()
- 定位多个元素:find_elements_by_xpath()
通过完整超链接定位
- 定位一个元素:find_element_by_link_text()
- 定位多个元素:find_elements_by_link_text()
通过部分链接定位
- 定位一个元素:find_element_by_partial_link_text()
- 定位多个元素:find_elements_by_partial_link_text()
通过标签定位
- 定位一个元素:find_element_by_tag_name()
- 定位多个元素:find_elements_by_tag_name()
通过类名进行定位
- 定位一个元素:find_element_by_class_name()
- 定位多个元素:find_elements_by_class_name()
通过css选择器进行定位
- 定位一个元素:find_element_by_css_selector()
- 定位多个元素:find_elements_by_css_selector()
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw')
六、定位元素另一种写法
需引入By模块
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element(By.ID, 'kw')
七、元素的交互
点击某个元素:click()
模拟输入:send_keys()
清除操作:clear()
提交表单:submit()
获取元素的属性值:get_attribute(name)
获取元素的位置:location
获取元素的文本值:text
获取元素的大小:size
获取元素的id值:id
获取元素的标签名:tag_name
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('我是autofelix')
driver.find_element_by_id('su').click()
八、执行JS
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
js_sql = '''
document.getElementById('kw').value = '我是autofelix'
'''
driver.execute_script(js_sql)
九、操作Frame
网页中frame的话,需要执行切入切出操作
switch_to.from(子iframe的id名称) 切入
switch_to.parent_frame(父iframe的id名称) 切出
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
//这个网址并没有iframe,我臆测有,你们看看就行
driver.switch_to.frame('我臆测出来的iframe')
十、cookie操作
删除当前页面所有cookies:delete_all_cookies()
获取指定cookie值:get_cookie(name)
获取当前页面所有cookies值:get_cookies()
设置cookie值:add_cookie()
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.delete_all_cookies()
driver.add_cookie({'name': 'name', 'domain': '.baidu.com', 'value': 'autofelix'})
十一、选项卡管理
保存所有选项卡的元组:window_handles
切换选项卡:switch_to.window()
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.get('https://www.taobao.com')
driver.switch_to.window(driver.window_handles[0])
driver.switch_to.window(driver.window_handles[1])
十二、鼠标事件
鼠标事件需要引入ActionChains模块
鼠标右击:move_to_element(above)
鼠标双击:double_click()
左键按住拖动:drag_and_drop()
动作存储:perform()
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化谷歌浏览器
driver = webdriver.Chrome()
# 最大化窗口
driver.maximize_window()
# 打开头条登陆网址
driver.get('https://sso.toutiao.com')
# 等待某个元素是否出现
WebDriverWait(self.driver, 10).until(
EC.text_to_be_present_in_element((By.XPATH, '//*[@id="mobile-code-get"]/span'), u'发送')
)
# 实例化鼠标操作
action = ActionChains(self.driver)
# 按住滑块
action.click_and_hold(self.driver.find_element_by_xpath('//*[@id="captcha_container"]')).perform()
# 将滑块移动x的距离
action.move_by_offset(xoffset=x, yoffset=0).perform()
# 释放滑块
action.release().perform()
十三、等待
隐氏等待:如果到一定时间,指定的元素还没有出现,进程不会阻塞,但是到指定时间还没有找到,就会抛出异常
显示等待:如果在一定时间内,指定的元素没有出现,进程会阻塞在这里,如果到指定时间还没有找到,就会抛出异常
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://www.baidu.com')
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
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://www.baidu.com')
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'kw'))
)
十四、前进后退刷新
后退:back()
前进:forward()
刷新:refresh()
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.get('https://www.taobao.com')
driver.get('https://www.jd.com')
driver.back()
driver.forward()
driver.refresh()
十五、关闭浏览器
关闭当前标签页:close()
关闭整个浏览器:quit()
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
//打开百度页面后,关闭整个浏览器
driver.quit()
- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK