zoukankan      html  css  js  c++  java
  • WEB UI自动化

    本人虽然自学最开始是ui自动化,但是后面实际项目中并没有用到;

    年底想换工作,所以还是捡起来,计划本周内完成复习,并把记录下来(原文章删了,当前日期为2019.11.18)。

    一、环境准备

    1、安装selenium:pip install selenium

    2、下载驱动,找到浏览器对应的driver并下载

      Chrome版本对应关系:https://blog.csdn.net/yoyocat915/article/details/80580066

      Chrome驱动下载:http://npm.taobao.org/mirrors/chromedriver

      解压将驱动放到python安装目录下,因为该目录我设置了环境变量

    二、实用技能

    1、隐式等待10秒:dr.implicitly_wait(10)

    2、注意动态属性不能定位,最好用相对位置来定位

    3、登录验证码的情况,用万能码

    4、iframe (frame需要一级一级逐级进入)

      1>切换到frame  switch_to.frame

      2>切换回主文档  switch_to.default_content()

      3>返回上一级文档  driver.switch_to.parent_frame() 

    5、窗口切换

    from selenium import webdriver
    
    dr=webdriver.Chrome()
    dr.get('https://www.baidu.com/')
    dr.implicitly_wait(10)
    Q=dr.find_element_by_css_selector("[title='点击一下,了解更多']").click()
    
    #所有页面
    # all_handle=dr.window_handles
    current_handle=dr.current_window_handle#当前页面
    dr.switch_to.window(current_handle)
    
    A=dr.find_element_by_id('kw').send_keys('测试')

    6、元素可见、存在、点击、被选中判断(涉及到显示等待)

    driver.find_element_by_id('kw').is_displayed()   #查看元素是否可见

    参考:https://blog.csdn.net/weixin_40894921/article/details/88367716

    7、截屏

    #可以通过时间来区分命名,不然每运行一次会覆盖
    #下面2种截图方式都可以
    screenshot1=dr.get_screenshot_as_file(".\文件\screenshot.png")
    screenshot2=dr.save_screenshot(".\文件\screenshot2.png")

    8、JS操作

    相关点:有些元素不可见,可以通过执行js操作变为可见

    参考:https://blog.csdn.net/yinlin330/article/details/82625454

    9、弹窗、文件上传

    #上传文件
    send_keys('文件路径')
    
    alert=dr.switch_to_alert()#获取alert对话框
    print(alert.text)#获取弹窗内容
    
    #警告对话框,只能选择接受弹窗
    alert.accept()
    
    #确定、取消的弹窗
    alert.accept()#确定
    alert.dismiss()#取消
    
    #文字输入的弹窗
    alert=dr.switch_to_alert()
    alert.send_keys('1')
    alert.accept()

    三、元素定位

    1、普通方式
      1> id定位     driver.find_element_by_id("")
      2> name定位    driver.find_element_by_name("")
      3> class定位     driver.find_element_by_class_name("")
      4> tag定位     driver.find_element_by_tag_name("")
      5> link定位    driver.find_element_by_link_text("")
      6> partial link定位    driver.find_element_by_partial_link_text("")

    2、xpath方式(分绝对路径和相对路径,但相对路径比较适用,另外浏览器copy xpath可以作为一个参考)

    3、css方式

     

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    import time
    
    dr=webdriver.Chrome()
    dr.get('https://email.163.com/')
    dr.implicitly_wait(10)
    
    iframe=dr.find_element_by_xpath("//div[@class='urs-163-area']/iframe")
    dr.switch_to.frame(iframe)
    
    user=dr.find_element_by_xpath("//input[contains(@data-loginname,'loginEmail')]")
    user.send_keys('帐号')
    
    pwd=dr.find_element_by_xpath("//input[@placeholder='输入密码']")
    pwd.send_keys('密码')
    
    login=dr.find_element_by_css_selector("#dologin")
    login.click()
    #鼠标悬停并单击
    action=ActionChains(dr)
    q=dr.find_element_by_xpath("//*[@id='_mail_component_32_32']/span[@title='收件箱']")
    action.move_to_element(q).click().perform()
    
    #悬停
    # mouseshow=dr.find_element_by_link_text("仪表盘")
    # ActionChains(dr).move_to_element(mouseshow).perform()
    # time.sleep(5)
    #双击
    # mousedc=dr.find_element_by_id("field")
    # ActionChains(dr).double_click(mousedc).perform()
    # time.sleep(5)
    #右击
    # ActionChains(dr).context_click(mousedc).perform()

    以上是163邮箱登录,涉及到了隐式等待、iframe、xpath定位、css定位、鼠标悬停等内容

  • 相关阅读:
    极大似然估计
    python模块的安装
    变异检测
    泰勒公式
    shell关于变量的操作
    Hadoop安装教程
    关于连接linux被拒
    靶向药
    层次聚类
    基因芯片原理
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/10666177.html
Copyright © 2011-2022 走看看