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

    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()

    # 导入webdriver
    from selenium import webdriver
    
    # 创建一个浏览器对象
    driver = webdriver.Firefox()
    
    # 设置全屏
    driver.maximize_window()
    
    # 获取当前浏览器尺寸
    size = driver.get_window_size()
    print(size)
    
    # 设置浏览器尺寸
    driver.set_window_size(400, 400)
    size = driver.get_window_size()
    print(size)
    
    # 获取浏览器位置
    position = driver.get_window_position()
    print(position)
    
    # 设置浏览器位置
    driver.set_window_position(100,200)
    
    
    # 关闭浏览器
    driver.quit()
    driver.close()

    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())

    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)

    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()

    6.下拉框操作

    将定位到的下拉框元素传入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()

  • 相关阅读:
    nodejs dateformat date-utils
    nodejs async
    nodejs dateformat date-utils
    nodejs timer block-timer timer-ease
    linux 修改 ssh 的端口号,启动hg服务
    linux 下添加 路由
    tkprof 命令行工具用法
    通过API删除库存货位
    使用FROM个性化修改标准FORM的LOV
    批量更新 ITEM 物料属性
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12627499.html
Copyright © 2011-2022 走看看