zoukankan      html  css  js  c++  java
  • selenium常用方法整理

    一、常用库导入

    1.from selenium import webdriver  导入webdriver模块

    2.from selenium.webdriver import ActionChains  导入动作链类,动作链可以储存鼠标的动作,并一起执行

    3.from selenium.webdriver.common.key import Key  键盘操作使用的是Keys类,一般配合send_keys使用

    4.from selenium.webdriver.support.select import Select  下拉框的操作都交由Select类进行处理

    5.from selenium.webdriver.common.by import By

    from selenium.webdriver.support.ui import WebDriverWait

    from selenium.webdriver.support import expected_conditions as EC     显示等待使用的类

    二、基本操作

    1.浏览器相关操作

    创建浏览器对象  driver = webdriver.xxx()

    窗口最大化    maximize_window()

    获取浏览器尺寸  get_window_size()

    设置浏览器尺寸  set_window_size()

    获取浏览器位置  get_window_position()

    设置浏览器位置  set_window_position(x,y)

    关闭当前标签/窗口 close()

    关闭所有标签/窗口  quit()

     1 # 导入webdriver
     2 from selenium import webdriver
     3 
     4 # 创建一个浏览器对象
     5 driver = webdriver.Firefox()
     6 
     7 # 设置全屏
     8 driver.maximize_window()
     9 
    10 # 获取当前浏览器尺寸
    11 size = driver.get_window_size()
    12 print(size)
    13 
    14 # 设置浏览器尺寸
    15 driver.set_window_size(400, 400)
    16 size = driver.get_window_size()
    17 print(size)
    18 
    19 # 获取浏览器位置
    20 position = driver.get_window_position()
    21 print(position)
    22 
    23 # 设置浏览器位置
    24 driver.set_window_position(100,200)
    25 
    26 
    27 # 关闭浏览器
    28 driver.quit()
    29 driver.close()
    View Code

    2.页面相关操作

    请求某个url      driver.get(url)

    刷新页面操作     refresh()

    回退到之前的页面   back()

    前进到之后的页面   forward()

    获取当前访问页面url  current_url

    获取当前浏览器标题  title

    保存图片       get_screenshot_as_png()/get_screenshot_as_file(file)

    网页源码       page_source

    # 导包
    from selenium import webdriver
    import time
    # 创建浏览器对象
    driver = webdriver.Firefox()
    
    # 访问百度
    url1 = 'http://www.baidu.com'
    driver.get(url1)
    print('访问:',url1)
    
    # 访问知乎
    url2 = 'https://zhuanlan.zhihu.com/'
    time.sleep(2)
    driver.get(url2)
    print('访问:',url2)
    
    # 后退操作
    time.sleep(2)
    driver.back()
    print('后退到',url1)
    
    # 前进
    time.sleep(2)
    driver.forward()
    print('前进到',url2)
    
    # 显示当前的url
    print(driver.current_url)
    
    # 显示当前的页面标题
    print(driver.title)
    
    # 保存快照操作
    # 自动写文件
    driver.get_screenshot_as_file('baidu.jpg')
    
    # 自己写文件
    data = driver.get_screenshot_as_png()
    with open('baidu2.jpg','wb') as f:
        f.write(data)
    
    data = driver.page_source
    # 以二进制类型写入文件
    with open('baidu.html','wb') as f:
        f.write(data.encode())
    View Code

    3.页面元素的定位(八种定位方式)

    id定位       driver.find_element_by_id(value)

    name属性值定位  driver.find_element_by_name(value)

    类名定位       driver.find_element_by_class_name(value)

    标签名定位      driver.find_element_by_tag_name(value)

    链接文本定位     driver.find_element_by_link_text(value)

    部分链接文本    driver.find_element_by_partial_link_text(value)

    xpath路径表达式  driver.find_element_by_xpath(value)

    css选择器     driver.find_element_by_css_selector(value)

    4.元素的操作

    对元素的相关操作,一般要先获取到元素,再调用相关方法 element = driver.find_element_by_xxx(value)

    点击操作    element.click()

    清空输入框   element.clear()

    输入框输入数据 element.send_keys(data)

    获取文本内容(既开闭标签之间的内容)  element.text

    获取属性值(获取element元素的value属性的值)  element.get_attribute(value)

    from selenium import webdriver
    import time
    # 创建一个浏览器
    driver = webdriver.Firefox()
    
    # 访问百度
    url = 'http://www.baidu.com'
    driver.get(url)
    
    # 定位到输入框
    el = driver.find_element_by_id('kw')
    # 输入selenium
    el.send_keys('selenium')
    # 清空操作
    el.clear()
    # 输入python
    el.send_keys('python')
    
    # 定位到搜索按钮
    el_sub = driver.find_element_by_id('su')
    # 调用提交
    el_sub.click()
    
    time.sleep(5)
    driver.close()
    View Code

    5.鼠标和键盘操作

    鼠标操作需要导入类,见第一部分,然后创建对象ActionChains(driver),键盘操作导入类见第一部分

    鼠标右击

    el = driver.find_element_by_xxx(value)

    context_click(el)

    鼠标双击

    el = driver.find_element_by_xxx(value)

    ActionChains(driver).double_click(el).perform()

    鼠标悬停

    el = driver.find_element_by_xxx(value)

    ActionChains(driver).move_to_element(el).perform()

    常用键盘操作

    send_keys(Keys.BACK_SPACE) 删除键(BackSpace)

    send_keys(Keys.SPACE) 空格键(Space)

    send_keys(Keys.TAB) 制表键(Tab)

    send_keys(Keys.ESCAPE) 回退键(Esc)

    send_keys(Keys.ENTER) 回车键(Enter)

    send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)

    send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)

    send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

    send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)

    from selenium import webdriver
    #  导入动作链类
    from selenium.webdriver import ActionChains
    
    # 开浏览器
    driver = webdriver.Firefox()
    
    # 访问百度
    url = 'http://www.baidu.com'
    driver.get(url)
    
    # 定位到logo元素
    el_logo = driver.find_element_by_css_selector('#lg > map:nth-child(2) > area:nth-child(1)')
    
    # 鼠标右击操作,操作元素前,需要将操作的元素定位出来并且穿入相应的动作中,如果要执行操作,需要调用perform()
    ActionChains(driver).context_click(el_logo).perform()
    
    # 双击定位到的元素,进行切换
    ActionChains(driver).double_click(el_logo).perform()
    
    # 开一个浏览器
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 访问京东
    url = 'http://www.jd.com'
    driver.get(url)
    
    # 获取分类组元素
    el_list = driver.find_elements_by_class_name('cate_menu_item')
    
    #鼠标悬停
    for el in el_list:
        ActionChains(driver).move_to_element(el).perform()
        time.sleep(1)
    driver.quit()
    View Code

    6.弹出框操作

    进入到弹出框中  driver.switch_to.alert()

    接收警告     accept()

    关闭警告     dismiss()

    发送文本到警告框 send_keys(data)

    7.下拉框操作

    将定位到的下拉框元素传入Select类中  selobj = Select(element)

    通过索引选择,index 索引从 0 开始  select_by_index()

    通过值选择(option标签的一个属性值)  select_by_value()

    通过文本选择(下拉框的值)  select_by_visible_text()

    查看所有已选  all_selected_options

    查看第一个已选  first_selected_option

    查看是否是多选  is_multiple

    查看选项元素列表  options

    取消选择   deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()

    8.滚动条操作

    js = "window.scrollTo(x,y) " x为水平拖动距离,y为垂直拖动举例

    driver.execute_script(js)

    js= "var q=document.documentElement.scrollTop=n" n为从顶部往下移动滚动举例

    driver.execute_script(js)

    9.cookies操作

    获取所有cookies  get_cookies()

    获取key对应的值  get_cookie(key)

    设置cookies  add_cookie(cookie_dict)

    删除指定名称的cookie  delete_cookie(name)

    删除所有cookie  delete_all_cookies()

    10.多标签/多窗口、多表单/多框架切换

    多表单/多框架切换 

    直接使用id值切换进表单   driver.switch_to.frame(value)

    定位到表单元素,再切换进入

    el = driver.find_element_by_xxx(value)

    driver.switch_to.frame(el)

    跳回最外层的页面  driver.switch_to.default_content()

    跳回上层的页面  driver.switch_to.parent_frame()

    多标签/多窗口之间的切换

    获取所有窗口的句柄   handles = driver.window_handlers

    通过窗口的句柄进入的窗口  driver.switch_to.window(handles[n])

  • 相关阅读:
    Python爬虫入门之Urllib库的高级用法
    Python爬虫入门之Urllib库的基本使用
    Python中对字符串的操作
    Python2.x爬虫入门之URLError异常处理
    Python编写的记事本小程序
    Python2.X和Python3.X中Tkinter模块的文件对话框、下拉列表的不同
    记录面试龙腾简合-java开发工程师经历
    解决npm ERR! Please try running this command again as root/Administrator. 问题
    ionic3/4 使用NavController 返回两层的方式
    点击iframe窗口里的超链接,打开新页面的方式
  • 原文地址:https://www.cnblogs.com/Maggie2019/p/11016250.html
Copyright © 2011-2022 走看看