zoukankan      html  css  js  c++  java
  • Selenium 学习笔记(二)

    理一下定位网页元素方法:

    1. find_element_by_id() : 通过ID属性定位,需要节点包含id ,如<input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">

    2. find_element_by_name() : <input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">

    3. find_element_by_class_name() :<input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">

    4. find_element_by_css_selector() :在网页上选中元素---右键检查---在高亮的html代码中,继续右键,选择copy---copy selector

    5. find_element_by_link_text("登录"):察看网页标签对之间文本,<a href="/index.php">登录</a>,必须是a标签,必须有文本

     

    上述常见方法得区别:

    1. id 和name依赖网页必须存在该元素

    2. class_name往往有很多

    3. link_text和partial_text(局部文本)只能针对文本A标签

    4. css_selector和xpath 基本能定位所有元素

     

     

    常见得一些行为:

    click() :点击

    clear():清空

    send_keys() :输入

     

     

    接着上次得写。

    功能步骤:

    1. 输入用户名、密码、确认密码、手机、邮箱,点击 注册 按钮。

    2. 点击个人资料,更改个人资料。

    下面来自动化它们~

     

     1 from selenium import webdriver
     2 
     3 driver = webdriver.Chrome()
     4 driver.get("http://localhost/")
     5 driver.maximize_window()
     6 
     7 js = 'document.getElementsByClassName("site-nav-right fr")[0].childNodes[3].removeAttribute("target")'
     8 # 注意单双引号
     9 driver.execute_script(js)
    10 driver.find_element_by_link_text("注册").click()
    11 # find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击
    12 
    13 # current_tab = driver.current_window_handle
    14 # # current_tab 是首页
    15 # all_tab = driver.window_handles
    16 # for i in all_tab:
    17 #     if i == current_tab:
    18 #         driver.close()
    19 #     else:
    20 #         driver.switch_to.window(i)
    21 
    22 # 填写注册信息
    23 driver.find_element_by_name("username").send_keys("眼底有霜")
    24 driver.find_element_by_name("password").send_keys("jingmingtian")
    25 driver.find_element_by_name("userpassword2").send_keys("jingmingtian")
    26 driver.find_element_by_name("mobile_phone").send_keys("18612345678")
    27 driver.find_element_by_name("email").send_keys("18612345678@cc.cc")
    28 driver.find_element_by_name("email").submit()
    29 #driver.find_element_by_class_name("reg_btn").click()
    30 
    31 # 提交表单操作,可以通过点击按钮 也可以在最后一项末尾添加submit()进行表单提交

     

     

    上面写得是注册模块,结果页面是 :

     

     下面用刚刚注册得帐号登录,然后点击账户设置---个人资料,输入个人信息。重点是关于日历模块、单选框模块得处理。

       

     1 import time
     2 from selenium import webdriver
     3 
     4 driver = webdriver.Chrome()
     5 driver.get("http://localhost/index.php")
     6 driver.maximize_window()
     7 driver.implicitly_wait(30)
     8 
     9 # 点击登录按钮,切换窗口,然后输入帐号
    10 driver.find_element_by_link_text("登录").click()
    11 current_tab = driver.current_window_handle
    12 all_tab = driver.window_handles
    13 for i in all_tab:
    14     if i != current_tab:
    15         driver.switch_to.window(i)
    16     else:
    17         driver.close()
    18 
    19 driver.find_element_by_name("username").send_keys("眼底有霜")
    20 driver.find_element_by_name("password").send_keys("jingmingtian")
    21 driver.find_element_by_name("cookie").click()
    22 driver.find_element_by_class_name("login_btn").click()
    23 
    24 driver.find_element_by_link_text("账号设置").click()
    25 driver.find_element_by_link_text("个人资料").click()
    26 
    27 
    28 driver.find_element_by_id("true_name").send_keys("消愁")
    29 xb = driver.find_elements_by_id("xb")
    30 xb[1].click()
    31 # find_elements 记得是带S得,获取节点下所以元素,结果是数组形式
    32 
    33 # 日历模块,查看源码发现,带有readonly 属性,无法直接写入,而通过日历模块选择太麻烦,所以先清除该属性
    34 js = 'document.getElementById("date").removeAttribute("readonly")'
    35 driver.execute_script(js)
    36 
    37 driver.find_element_by_id("date").send_keys("2000-01-01")
    38 driver.find_element_by_id("qq").send_keys("1111111")
    39 driver.find_element_by_class_name("btn4").click()
    40 
    41 # 提交表单后,会生成浏览器弹窗
    42 time.sleep(3)
    43 # time这块,输入后,字体下方会提示红线,证明当前找不到这个方法,需要导入。
    44 # 直接按快捷键  Alt + Enter 快捷导入
    45 driver._switch_to.alert.accept()
    46 
    47 # 弹窗有accept() 和dismiss()

     

     

     

    下次写添加商品、寄送地址以及点击购物车进行结算。

    --- 2017-09-08  11:44:55

     

  • 相关阅读:
    thoughtworks家庭作业C++版本
    删除数组中等于某个key的所有元素
    一些必读的开源项目
    库函数strlen源码重现及注意问题
    判断相同树或者对称树
    约瑟夫环问题
    Loadrunner 脚本录制策略
    品味性能之道<十一>:JAVA中switch和if性能比较
    白盒静态自动化测试工具:FindBugs使用指南
    六个步骤把资料转换成知识
  • 原文地址:https://www.cnblogs.com/good-time/p/7477839.html
Copyright © 2011-2022 走看看