zoukankan      html  css  js  c++  java
  • Selenium-WebDriverApi介绍

    浏览器操作:

    #刷新
    driver.refresh()
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get('http://www.baidu.com')
    import time
    time.sleep(2)
    driver.refresh()
    
    #前进
    driver.forward()
    #后退
    driver.back

    获取标签元素

    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get('http://www.imdsx.cn')
    
    #通过ID定位目标元素 driver.find_element_by_id('i1').send_keys(1111)#向页面发送文本‘11111’
    # 通过className定位目标元素 driver.find_element_by_class_name('c1').send_keys(1111)
    #通过name属性定位目标元素 driver.find_element_by_name('n1').send_keys(1111)
    #通过Xpath属性定位目标元素 driver.find_element_by_xpath('//input[@placeholder="请通过XPATH定位元素"]').send_keys(1111)
    #通过css Selector定位目标元素 driver.find_element_by_css_selector('[maxlength="20"]').send_keys(2222)
    # 通过标签名称定位(注:在一个页面中,标签一定会重复,所以不用这个来进行定位) driver.find_element_by_tag_name('input').send_keys('tag name')
    #通过标签中的文本查找元素 driver.find_element_by_link_text('登录').click()
    #通过标签中文本的模糊匹配查找 driver.find_element_by_partial_link_text('录').click()

    获取标签元素常用的一共有8种定位方式,而Selenium实际提供了18种定位方式,还有8种是上面的复数形式,实际种一般用不到,还有2种是这上面16种的底层封装。参数化的一种调用方式。

    复数:

    e=driver.find_elements_by_class_name('classname')[0]
    e.send_keys(1111)
    print(e)
    print(type(e))
    
    接受两个参数 形参1 以什么形式定位  形参2 定位value是什么
    driver.find_element_by_id('i1')
    driver.find_element('id','i1').send_keys(1111)
    driver.find_elements('id','i1')[0].send_keys(2222)

    一般都直接用driver.find_element_by_css_selector(),因为底层只要符合w3c的都转化为css_selector

    窗口操作:

    #获取当前浏览器的大小
    driver.get_window_size()
    #通过宽和高对size进行设置
    driver.set_window_size('100','200')
    # 获取当前窗口针对于Windows的位置的坐标x,y
    driver.get_window_position()
     
    # 设置当前窗口针对Windows的位置,x,y
    driver.set_window_position(20,20)
     
    # 最大化当前窗口,不需要传参
    driver.maximize_window()
     
    # 返回当前操作的浏览器句柄
    driver.current_window_handle
     
    # 返回所有打开server的浏览器句柄
    driver.window_handles
    截取当前页面:
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://www.baidu.com")
    driver.get_screenshot_as_file('d.png')

    执行JavaScript语句
    # 执行JavaScript语句
    driver.execute_script('window.scrollTo(0,0);')#执行js的api,通过js来操作滚动条,滚动到最上面

    关闭与退出:

    #当开启多个页面时,关闭当前页面
    driver.close()
    #退出并关闭所有页面驱动
    driver.quit()
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://ui.imdsx.cn/uitester/")
    driver.maximize_window()#将窗口放大
    driver.execute_script('window.scrollTo(0,0);')#执行js的api
    driver.find_element_by_css_selector('[href="/new-index/"]').click()
    handles=driver.window_handles#返回所有打开server的浏览器句柄
    print(handles)#返回list
    driver.switch_to.window(handles[1])
    driver.find_element_by_css_selector('#newtag').send_keys(1111)#找到新页面上的元素
    driver.close()#关闭当前tab页
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://ui.imdsx.cn/uitester/")
    driver.maximize_window()#将窗口放大
    driver.execute_script('window.scrollTo(0,0);')#执行js的api
    driver.find_element_by_css_selector('[href="/new-index/"]').click()
    handles=driver.window_handles
    print(handles)
    driver.switch_to.window(handles[1])
    driver.find_element_by_css_selector('#newtag').send_keys(1111)
    driver.quit() #关闭所有页面,结束服务

    其他

    # 返回页面源码
    driver.page_source
     
    # 返回tag标题
    driver.title
     
    # 返回当前Url
    driver.current_url
     
    # 获取浏览器名称 如:chrome
    driver.name

    ElementApi接口

    #根据标签属性名称,获取属性value
    element.get_attribute('style')
    # 向输入框输入字符串 如果input的type为file类型 可以输入文件绝对路径上传文件
    element.send_keys()
    # 清除文本内容
    element.clear()
    # 鼠标左键点击操作
    element.click()
     
    # 通过属性名称获取属性
    element.get_property('id')
     
    # 返回元素是否可见 True or False
    element.is_displayed()
     
    # 返回元素是否被选中 True or False
    element.is_selected()
     
    # 返回标签元素的名字
    element.tag_name
     
    # 获取当前标签的宽和高
    element.size
     
    # 获取元素的文本内容
    element.text
     
    # 模仿回车按钮 提交数据
    element.submit()
     
    # 获取当前元素的坐标
    element.location
     
    # 截取图片
    element.screenshot()
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://ui.imdsx.cn/uitester/")
    driver.maximize_window()#将窗口放大
    driver.execute_script('window.scrollTo(0,0);')#执行js的api
    e=driver.find_element_by_css_selector('#i1')
    e.send_keys(1111)
    import time
    time.sleep(1)
    e.clear() #清除文本框内内容


  • 相关阅读:
    ICONS-图标库
    图形资源
    vue项目中,如果修改了组件名称,vscode编辑器会在引入修改组件的名字处提示红色波浪线 The file is in the program because:Imported via xxx Root file specified for compilation .
    接口在dev环境报跨域问题(has been blocked by CORS policy:Response to preflight request doesn't pass access control check:No 'Access-Control-Allow-Origin' header ispresent on the requested resource.),qa环境正常
    阿里云occ的图片文件URL用浏览器直接打开无法访问,提示This XML file does noe appear to have any style information associated with it. The document tree is shown below.
    vue 项目使用element ui 中tree组件 check-strictly 用法(父子不互相关联的反显情况)
    高德地图进行线路规划绘制标记点操作(vue)
    vue中实现拖拽调整顺序功能
    2021-01-22 浏览器相关知识
    2021-01-22 js 相关知识点
  • 原文地址:https://www.cnblogs.com/wxcx/p/8934540.html
Copyright © 2011-2022 走看看