51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3882|回复: 2

[转贴] Python 学习日记(养成学习的习惯)

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:11
  • 签到天数: 932 天

    连续签到: 4 天

    [LV.10]测试总司令

    发表于 2016-4-20 11:32:31 | 显示全部楼层 |阅读模式
    Python 学习day1
    前期是直接用selenium + python 来学习自动化的,学习了一下,感觉在Python这块上有些吃力,所以就先学一下python基础。
    当然,今天的学习没有按照一个初学者来一步一步的去学习,而是挑着学的,学一些自己觉得有用的东西,或者是对学习有提高的地方。
    学习内容则是对照着书本,通过在CMD里面和pycharm编译器里面去写一些代码,并执行。感觉python还是比较给力的,学起来很舒服,真的有点喜欢上代码了。

    Python 学习day2
    今天主要学习了python的一些基本语法,以及操作了一些小案例。
    原以为要把python好好学习一下,然后再去学selenium要好了些,但是结果发现不是这样的,selenium+python 自动化中,python目前对于我这个级别的自动化学习者来说,不是很重要,而且前期也不需要去学习得那么深,所以python学习到此结束。
    从明天开始继续学习selenium+python,加油!


    自动化学习python+selenium day3
    学习了几种常见的定位方式,比如说id,name,class name, link text, partical link text, xpath, css.
    在这几种定位中,常见的当然好用,但是如果能用好css和xpath, 那将法力无边了!
    加油,骚年!

    自动化学习python+selenium day4
    学习了如何定位元素组,以及对元素组中的一些元素进行操作。
    学习过程中,定位元素组比较容易,但是操作的话,就需要有一些语言基础了,以及一些HTML基本,因为这些实例是基于一个简单的html来操作的。
    学到这里,我突然想去先学习一下python编程了。
    所以从明天开始,我将先学习6天的python编,到下周五看看python基础怎么样再决定下一步学习计划。

    自动化学习python+selenium day5
    学习到现在,学习到了下面这些内容,主要是一些定位方法和使用方法……加油继续学!
    id_
    #当前元素的ID
    tag_name
    #获取元素标签名的属性
    text
    #获取该元素的文本。
    click()
    #单击(点击)元素
    submit()
    #提交表单
    clear()
    #清除一个文本输入元素的文本
    get_attribute(name)
    #获得属性值
    s_selected(self)
    #元素是否被选择
    is_enabled()
    #元素是否被启用
    find_element_by_id(id_)
    #查找元素的id
    find_element_by_name(name)
    #查找元素的name
    find_element_by_link_text(link_text)
    #查找元素的链接文本
    find_element_by_partial_link_text(link_text)
    #查找元素的链接的部分文本
    find_element_by_tag_name(name)
    #查找元素的标签名
    find_element_by_xpath(xpath)
    #查找元素的xpath
    find_elements_by_xpath(xpath)
    #查找元素内的子元素的xpath
    find_element_by_class_name(name)
    #查找一个元素的类名
    find_elements_by_class_name(name)
    #查找元素的类名
    find_element_by_css_selector(css_selector)
    #查找并返回一个元素的CSS 选择器
    find_elements_by_css_selector(css_selector)
    #查找并返回多个元素的CSS 选择器列表
    send_keys(*value)
    #模拟输入元素

    自动化学习python+selenium day6
    今天学习了以下内容,加油消化!
    switch_to_frame():定位到frame,如果不是嵌套的套架,而是窗口时,就可以用windows;
    driver.switch_to_window():定位到窗口,driver.switch_to_window("windowName"),用法与switch_to_frame. 相同;
    implicitly_wait(),它的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
    调用js方法
           execute_script(script, *args)
    在当前窗口/框架 同步执行javaScript
    脚本:JavaScript的执行。
    *参数:适用任何JavaScript脚本。
    使用:
    driver.execute_script(‘document.title’)
    不过目前对于js来说,还是比较陌生

    自动化学习python+selenium day7
    今天学习内容如下,感觉还不错……加油!
    –  上传文件
    文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,关键是思路。
    上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。
    其实,在selenium  webdriver 没我们想的那么复杂;只要定位上传按钮,通send_keys添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。下面通地例子演示
    #脚本要与upload_file.html同一目录
    file_path =  'file:///' + os.path.abspath('upload_file.html')
    driver.get(file_path)
    #定位上传按钮,添加本地文件
    driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')
    –  处理下拉框
    这里可能和之前的操作有所不同,首先要定位到下拉框的元素,然后选择下拉列表中的选项进行点击操作。
    m=driver.find_element_by_id("ShippingMethod")
    m.find_element_by_xpath("//option[@value='10.69']").click()
    当我们在保存设置时会弹出一个确定按钮;我们并没按照常规的方法去定位弹窗上的“确定”按钮,而是使用:
    –  driver.switch_to_alert()
    完成了操作,这是因为弹窗比较是一个具有唯一性的警告信息,所以可以用这种简便的方法处理。
    –  switch_to_alert()  
    焦点集中到页面上的一个警告(提示)
    – accept()
    接受警告提示

    自动化学习python+selenium day8
    今天学习了以下内容……加油!
    调用键盘按键操作需要引入keys包:
    from selenium.webdriver.common.keys import Keys
    通过send_keys()调用按键:
    send_keys(Keys.TAB)        # TAB
    send_keys(Keys.ENTER)    # 回车
    注意:这个操作和页面元素的遍历顺序有关,假如当前定位在账号输入框,按键盘的tab键后遍历的不是密码框,那就不法输入密码。 假如输入密码后,还有需要填写验证码,那么回车也起不到登陆的效果。
    输入中文问题
    顺便解决了一个困扰我到现的一个输入中文件的问题。selenium2 python在send_keys()中输入中文一直报错,其实前面加个小u 就解决了:
    send_keys(u"输入中文")
    同时,还学习了获取cookie, 以及对cookie进行增删改查的操作。

    自动化学习python+selenium day9
    今天学习了webdriver的一些基本原理,以及3种操作类……
    webdriver原理:

    1. WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver的remote server。

    2. Client 端通过CommandExcuter 发送HTTPRequest 给remote server 的侦听端口(通信协议: the webriver wire protocol)

    3. Remote server 需要依赖原生的浏览器组件(如:IEDriver.dll,chromedriver.exe),来转化转化浏览器的native调用。

    request 请求 / response 应答

    一次请求会对应一次应答

    POST/GET  是请求(request)两种类型;关于两种请求方式的类别参考其它资料

    200 、203 是 HTTP请求返回的状态码,200表示成功;

    sessionid :每一个访问服务器的客户端,都要先得到服务器端分配的一个sessionid ,就像通行证一样,只有得到sessionid的客户端才能向服务器请求想要的数据。

      其它还包括操作系统版本,浏览器类型、URL、字符类型等非常详细的记录。熟悉HTTP ,了解TCP 的三次握手四次挥手,相信你对浏览器的交互与webdriver原理会有更深入的认识。


    ActionChains 类(鼠标事件)

      context_click()  右击
      double_click()   双击
      drag_and_drop()  拖动


    测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除、移动、重命名),之前学习元素的点击非常简单:

    driver.find_element_by_id(“xxx”).click()

    那么鼠标的双击、右击、拖动等是否也是这样的写法呢?例如右击:

    driver.find_element_by_id(“xxx”).context_click()

    经过运行脚本得到了下面的错误提示:

    AttributeError: 'WebElement' object has no attribute 'context_click'

    提示右点方法不属于webelement 对象,通过查找文档,发现属于ActionChains 类

    鼠标双击的写法:

    #定位到要双击的元素
    qqq =driver.find_element_by_xpath("xxx")
    #对定位到的元素执行鼠标双击操作
    ActionChains(driver).double_click(qqq).perform()

    鼠标拖放操作的写法:

    #定位元素的原位置
    element = driver.find_element_by_name("source")
    #定位元素要移动到的目标位置
    target =  driver.find_element_by_name("target")

    #执行元素的移动操作
    ActionChains(driver).drag_and_drop(element, target).perform()


    转自:magic18的个人空间

    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-19 04:18 , Processed in 0.070337 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表