selenium 模块

一、selenium的基本使用

加载网页

selenium通过控制浏览器,所以对应的获取的数据都是elements中的内容。例如

from selenium import webdriver

from selenium.webdriver.common.by import By

driver =webdriver.Chrome()

#.访问百度

driver.get("http://www.baidu.com/")

#.截图

driver.save_screenshot("baidu.png")

定位和操作。例如

#.搜索关键词

driver.find_element(By.ID,"kw").send_keys("杜卡迪")  # send_keys() 给输入框赋值

#.点击ID为su的按钮

driver.find_element(By.ID,"su").click()

查看请求信息。例如

driver.page_source  #.获取页面内容

driver.get_cookies()

driver.current_url

退出

driver.close() # 退出当前页面

driver.quit() # 退出浏览器

二、元素的定位方法

selenium的定位操作

△元素定位的两种写法

a) 直接调用型。例如

el = driver.find_element_by_xxx(value) # xxx 是定位方式;value为该方式下的值

b) 导入By类型。例如

from selenium.webdriver.common.by import By

driver.find_element(By.xxx,value)  # xxx 是定位方式;value为该方式下的值

△元素定位的两种方式。

a) 精确定位一个element。例如

driver.find_element_by_xxx(value)

dirver.find_element(By.xxx,value)

b) 定位一组element。例如

driver.find_elements_by_xxx(value)

dirver.find_elements(By.xxx,value)

△元素定位的八种方法

a) By.ID使用id值定位。例如

el = driver.find_element_by_id()

el = driver.find_element(By.ID,' ')

b) By. XPATH使用xpath定位。例如

el = driver.find_element_by_xpath()

el = driver.find_element(By.XPATH,' ')

c) By.TAG_NAME使用标签定位。例如

el = driver.find_element_by_tag_name()

el = driver.find_element(By.TAG_NAME,' ')

d) By.LINK_TEXT使用链接文本定位。例如

el = driver.find_element_by_link_text()

el = driver.find_element(By.LINK_TEXT,' ')

e) By.PARTIAL_LINK_TEXT使用链接部分文本定位。例如

el = driver.find_element_by_partial_link_text()

el = driver.find_element(By.PARTIAL_LINK_TEXT,' ')

f) By.NAME使用name属性值定位。例如

el = driver.find_element_by_name()

el = driver.find_element(By.NAME,' ')

g) By.CLASS_NAME 使用class属性值定位。例如

el = driver.find_element_by_class_name()

el = driver.find_element(By.CLASS_NAME,' ')                                               

h) By.CSS_SELECTOR使用css选择器定位。例如

el = driver.find_element_by_tag_name()

el = driver.find_element(By_TAG_NAME,' ')

△元素的操作  (以下假设el 是定位到的元素)

a) 从定位到的元素中获取数据。例如

el.get_attribute(key)  # 获取key属性名对应的属性值

el.text  # 获取el的文本

b) 对定位到的元素的操作。例如

el.click()          # 对元素执行点击操作

el.submit()      # 对元素执行提交操作

el.clear()          # 对清空元素中的数据

el.send_keys(data)  # 对可输入元素el你输入数据data

三、selenium的其它操作

a) 让浏览器在后台跑。例如

from selenium.webdriver import Chrome

from selenium.webdriver.chrome.options import Options

opt = Options()

opt.add_argument("--headless")

opt.add_argument("--disable-gpu")

opt.add_argument("--window--size = 4000,1600")

web = Chrome(options = opt)

b) selenium处理cookie

获取cookie

dictCookies = driver.get_cookies()

设置cookie

driver.add_cookie(dictCookies)

删除cookie

driver.delete_cookie("cookieName")  # 删除一条cookie

driver.delete_all_cookies()  # 删除所有的cookie

c) 页面等待

强制等待

import time

time.sleep(n)    # 强制等待n秒

显式等待(自动化 web测试使用,爬虫基本不用)

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,"myDynamicElement"))

隐式等待

driver.implicitly_wait(n)    # 在指定的n秒内每隔一段时间尝试定位元素。如果n秒结束后还未定位出来则报错

注意:显式等待,就是一直等待到元素出现才去操作,如果超时则报异常;隐式等待,为浏览器对象创建一个等待时间,如果得不到就等待一段时间,直到拿到某个元素位置。浏览器会在设置的时间段内不断刷新。

d)页面 switch_to 方法切换的操作

页面切换。通常结合 windows_handles 例如

#. 获取当前所有窗口

current_windows = driver.window_handles

#. 根据窗口索引进行切换

driver.switch_to.window(current_windows[1])

driver.switch_to.window(web.current_windows[-1])    #. 跳转到最后一个窗口

driver.switch_to.window(current_windows[0])  #. 回到第一个窗口

切换iframe 。selenium默认是访问不了iframe中内容的,对应的解决思路是

driver.switch_to.frame(name/el/id)  #. 传入的参数可以使iframe对应的id值,也可以是用元素定位之后的元素对象

driver.switch_to.default_content()  #. 切换到主框架

切换弹窗。例如

alter = driver.switch_to_alter()

页面其它操作。例如

driver.forward()  #.前进

driver.back()    #.后退

driver.refresh()  #. 刷新

driver.close()    #. 关闭当前窗口

driver.maximize_window()  #. 最大化浏览器

e) 执行JavaScript脚本.例如

driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容