zoukankan      html  css  js  c++  java
  • selenium基础

    dsx博客:

    ui自动化:

    1、了解页面html页面代码构成(html、css、js)

    2、分析html页面,哪些属性可以用

    3、定位html

     xpath:

    1- //*[@id='i1']  先定位到所有元素,再定位到唯一元素

    2-//input[@id='i1']   在input下定位唯一元素

    3-有重复,先定位父级、再定位子集    //div[@class='driver']/input[id='i1']

    4-联合唯一定位,//select[@name='city' and @size='4']

    5-xpath可以使用脚标,css不可以

    Css Selector: 简洁,建议使用这种方式定位

    1-id定位   $('#idname')  匹配所有id属性中等于idname的元素   #i1

    2-class定位   $(.info) 匹配所有class属性中包含info的元素    .c1

    3- 标签选择器   $('input[name="bar"][name="wd"]')   input标签下name属性等于bar/wd的元素      -----  input[id='i1']     input[id='i1'][class='c1']

    4-模糊定位,^(以。。开头) $(以。。结尾)    *包含

    selenium-c/s架构,浏览器作为服务端,selenium代码作为客户端, 客户端向服务端发送请求,通过http接口的方式请求和响应数据

    import time
    
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com/')
    
    time.sleep(1)
    
    #18中定位方式
    #8种单数形式
    # driver.find_element_by_id('kw').send_keys('123') #向定位的id输入框发送数据,id唯一时方便使用
    # driver.find_element_by_class_name('classname').send_keys('123')
    # driver.find_element_by_name()
    # driver.find_element_by_tag_name('input').send_keys('456')
    # driver.find_element_by_xpath('//input[@id="kw"]').send_keys('456')
    # driver.find_element_by_css_selector('input[maxlength="255"]')   #优先考虑使用这种方式
    #基于a标签文案,点击动作
    # driver.execute_script('window.scrollTo(0,0)') #滚动页面x/y轴
    # driver.find_element_by_link_text('诺贝尔奖公布爱因斯坦成绩单').click()
    #m模糊查询,包含
    # driver.find_element_by_partial_link_text('成绩单').click()
    
    #8种复数形式,  所有符合的返回一个列表,复数形式就是单数形式加s
    driver.find_elements_by_class_name('classname')
    
    #2中底层方案
    driver.find_element('id','value')
    driver.find_elements()

    #常用api

    #操作浏览器
    # driver.maximize_window()  #全屏
    # size = driver.get_window_size() #获取当期浏览器的大小
    # driver.back() #后退
    # driver.refresh()#刷新
    # driver.forward()#前进
    # driver.get_screenshot_as_file('111.png') #截图
    # driver.execute_script()#执行js代码
    
    #操作元素
    element = driver.find_element_by_partial_link_text('大师兄')
    data = element.get_attribute('innerText')

    #tab切换
    # print(driver.window_handles) #有几个tab页面
    # print(driver.current_window_handle) #当前在哪个tab
    # driver.switch_to.window(driver.window_handles[-1]) #切换tab

    #退出驱动
    driver.quit()
    #关闭当前页面
    driver.close()

    #操作弹窗
    driver.find_element_by_css_selector('input[]') #调出弹窗
    time.sleep(1)
    driver.switch_to.alert.accept() # 取消弹窗1
    driver.switch_to.alert.dismiss()# 取消弹窗2

    #切换iframe-- 切换html标签,适用于多个html嵌套时
    driver.switch_to.frame('top-frame')

    #直接回到默认层的iframe
    driver.switch_to.default_content()

    #传递对象
    element = driver.find_element_by_css_selector('[]')
    driver.switch_to.frame(element)

     #等待

    1-time  调试用

    2-隐士

    3-显示,每次都用,  步长0.5,超时时间10    timeout

    #遇到定位不到的元素,怎么排查问题

    1-分析html,看清楚哪些是我们要用的唯一属性

    2-看清楚父子级关系

    3-有没有浏览器的tab要切换,元素是否不在当前页面

    4-排查有没有iframe

    5-排查这个元素在代码调用打开时页面是否渲染了

    6-排查定位的元素是否有display(隐藏)属性

    7-不用显示等待,用time调试的方式确保元素是可以点击的

  • 相关阅读:
    Java异常处理机制(转)
    深入探讨 java.lang.ref 包(转)
    一篇不错的讲解Java异常的文章
    Java国际化学习(一)介绍
    Java泛型集合排序(转)
    Java常见异常总结 (转)
    java中的异常处理机制
    深入分析 Java I/O 的工作机制(转)
    java里BufferedReader和Scanner
    JS深入学习知识整理
  • 原文地址:https://www.cnblogs.com/whcp855/p/13785564.html
Copyright © 2011-2022 走看看