• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

selenium安装配置和基本使用

武飞扬头像
图图淘气
帮助1

1.安装并配置selenium

1.1 下载selenium库

pip install selenium==3.3.0

1.2 安装chromedriver

  • 下载chromedriver,根据goole版本下载
    chromedriver下载链接
  • 将下载的chromedriver配置到系统环境变量中
    • 右键此电脑,点击属性
      学新通
    • 点击高级系统设置
      学新通
    • 点击高级–》点击环境变量
      学新通
    • 找到系统变量path,点击编辑
      学新通
    • 点击新建,将chromedriver的路径放进去,点击确定-》确定-》确定

2. selenium使用

2.1导入相关库

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys  

2.2配置相关属性

option = webdriver.ChromeOptions()  
option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
option = webdriver.ChromeOptions( )
option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
option.add_argument('--headless') #无头
option.add_argument('--disable-gpu')
option.add_argument('--hide-scrollbars')  # 隐藏滚动条, 应对一些特殊页面
option.add_argument('--proxy-server=http://127.0.0.1:1087') #添加代理

2.3 基本使用

  • 请求
     url='https:wwww.百度.com'
     driver = webdriver.Chrome(chrome_options=option)
     driver.maximize_window() # 设置最大的窗口
     driver.get(url) # 访问连接
     driver.save_screenshot("百度.png") # 截图
    
  • 查看请求信息
    driver.page_source   # 获取页面内容
    driver.get_cookies() # 获取cookie
    driver.current_url # 获取当前的url
    
  • 获取cookie
    dictCookies = driver.get_cookies()
    
  • 添加cookie
    cookies ={
    "_routing_id":"46139510-8ede-424f-b63a-e8d7aa4bdfa4",
    "sessionFunnelEventLogged":"1",
    "_auth":"1",
    "g_state":'{"i_l":0}',
    "cm_sub":"allowed"
    }
    driver.get(url) # 请求
    # 添加cookie
    driver.add_cookie({'name':'_routing_id','value':cookies['_routing_id']})
    driver.add_cookie({'name':'sessionFunnelEventLogged','value':cookies['sessionFunnelEventLogged']})
    driver.add_cookie({'name':'_auth','value':cookies['_auth']})
    driver.add_cookie({'name':'g_state','value':cookies['g_state']})
    driver.add_cookie({'name':'cm_sub','value':cookies['cm_sub']})
    #重新请求
    driver.get(url)
    
    学新通
  • 删除cookie
    #  删除一条cookie
    driver.delete_cookie("CookieName")
    # 删除所有的cookie
    driver.delete_all_cookies()
    
  • 退出
    driver.close()  # 退出当前页面
    driver.quit()   # 退出浏览器
    

3.元素方法

3.1 元素定位【2种方式】

  • 使用id值定位【By.ID 】

    el = driver.find_element(By.ID, '')
    el = driver.find_element_by_id()            
    
  • 使用xpath定位【By.XPATH】

    el = driver.find_element(By.XPATH, '')
    el = driver.find_element_by_xpath()         
    
  • 使用标签名定位【By.TAG_NAME】

    el = driver.find_element(By.TAG_NAME, '')
    el = driver.find_element_by_tag_name()     
    
  • 使用超链接文本定位【By.LINK_TEXT】

    el = driver.find_element(By.LINK_TEXT, '')
    el = driver.find_element_by_link_text() 
    
  • 使用部分超链接文本定位【By.PARTIAL_LINK_TEXT】

    el = driver.find_element(By.PARTIAL_LINK_TEXT  , '')
    el = driver.find_element_by_partial_link_text()
    
  • 使用name属性值定位【By.NAME】

    el = driver.find_element(By.NAME, '')
    el = driver.find_element_by_name()
    
  • 使用class属性值定位【By.CLASS_NAME 】

    el = driver.find_element(By.CLASS_NAME, '')   
    el = driver.find_element_by_class_name()
    
  • 使用css选择器定位【By.CSS_SELECTOR】

    el = driver.find_element(By.CSS_SELECTOR, '')  
    el = driver.find_element_by_css_selector()
    
  • 查找输入框

    input_name=driver.find_element(By.XPATH, '//input[@placeholder="Airport, country, hashtag, etc."]')  
     input_name.send_keys(point,Keys.ENTER) # 回车
    
  • 查找兄弟的下一个文本数据

    # 根据文本确认位置,在查询兄弟节点
    text=driver.find_elements(By.XPATH,"//*[text()='Coordinates']/following-sibling::td")[0].text
    
  • 获取页面html源码

    html=driver.page_source
    
  • 滚轮滑动

    # 一次滑动
    js = "window.scrollTo(0,800);"
    driver.execute_script(js)
    # 多次滑动
    for i in range(10):
    	js='window.scrollBy(0,200)'
    	driver.execute_script(js)
    

3.2 元素操作

代码 含义
el.get_attribute(key) 获取key属性名对应的属性值
el.text 获取开闭标签之间的文本内容
el.click() 对元素执行点击操作
el.submit() 对元素执行提交操作
el.clear() 清空可输入元素中的数据
el.send_keys(data,Keys.ENTER) 向可输入元素输入数据,并且回车

3.3 等待操作

  • 强制等待
    import time
    time.sleep(n)  
    
  • 显式等待
    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"))
    # \设置最长等待时间10,在10秒内每隔0.5秒使用指定条件去定位元素,如果定位到元素则直接结束等待,如果在10秒结束之后仍未定位到元素则报错 
    
  • 隐式等待
    driver.implicitly_wait(10) # 在指定的n秒内每隔一段时间尝试定位元素,如果n秒结束还未被定位出来则报错
    

3.4 窗口切换

  • 获取当前所有的窗口
    current_windows = driver.window_handles
    
  • 窗口索引切换
    driver.switch_to.window(current_windows[1])
    
  • 跳转到最后一个窗口
    driver.switch_to.window(web.window_handles[-1]) 
    
  • 跳到第一个窗口
    driver.switch_to.window(current_windows[0])
    
  • 获取iframe窗口元素
    driver.switch_to.frame(name/el/id) 
    
  • 获取弹窗信息
    alert = driver.switch_to_alert()
    

3.5页面操作

  • 前进
    driver.forward()
    
  • 后退
    driver.back() 
    
  • 刷新
    driver.refresh() 
    
  • 关闭当前窗口
    driver.close()
    

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbeajg
系列文章
更多 icon
同类精品
更多 icon
继续加载