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

    手工步骤:

    1. 登录系统之后,在搜索栏输入iPhone,点击搜索

    2. 点击商品进入商品详情

    3. 添加到购物车

    4. 点击购物车,跳转购物车;点击结算,跳转结算页面

    5. 添加寄送地址、支付方式、配送方式,点击结算

    过程中遇到得问题:

    1. 如果获取得元素是多项,一定记得要用find_elements,然后再使用数组下标获取或者使用select获取

    2. 中间添加地址得时候,卡住了

    这个是因为select是特殊得网页下拉框元素,上方我尝试通过具体城市id获取是获取不到,需要先定位到下拉框,然后再选择

     1 import time
     2 from selenium import webdriver
     3 from selenium.webdriver.support.select import Select
     4 
     5 driver = webdriver.Chrome()
     6 driver.get("http://localhost/index.php")
     7 driver.maximize_window()
     8 driver.implicitly_wait(30)
     9 
    10 # 点击登录按钮,切换窗口,然后输入帐号
    11 driver.find_element_by_link_text("登录").click()
    12 current_tab = driver.current_window_handle
    13 all_tab = driver.window_handles
    14 for i in all_tab:
    15     if i != current_tab:
    16         driver.switch_to.window(i)
    17     else:
    18         driver.close()
    19 
    20 driver.find_element_by_name("username").send_keys("眼底有霜")
    21 driver.find_element_by_name("password").send_keys("jingmingtian")
    22 driver.find_element_by_name("cookie").click()
    23 driver.find_element_by_class_name("login_btn").click()
    24 
    25 driver.find_element_by_link_text("账号设置").click()
    26 driver.find_element_by_link_text("个人资料").click()
    27 
    28 driver.find_element_by_id("true_name").clear()
    29 driver.find_element_by_id("true_name").send_keys("消愁")
    30 xb = driver.find_elements_by_id("xb")
    31 xb[1].click()
    32 # find_elements 记得是带S得,获取节点下所以元素,结果是数组形式
    33 
    34 # 日历模块,查看源码发现,带有readonly 属性,无法直接写入,而通过日历模块选择太麻烦,所以先清除该属性
    35 js = 'document.getElementById("date").removeAttribute("readonly")'
    36 driver.execute_script(js)
    37 
    38 driver.find_element_by_id("date").clear()
    39 driver.find_element_by_id("date").send_keys("2000-01-01")
    40 driver.find_element_by_id("qq").clear()
    41 driver.find_element_by_id("qq").send_keys("1111111")
    42 driver.find_element_by_class_name("btn4").click()
    43 
    44 # 提交表单后,会生成浏览器弹窗
    45 time.sleep(3)
    46 # time这块,输入后,字体下方会提示红线,证明当前找不到这个方法,需要导入。
    47 # 直接按快捷键  Alt + Enter 快捷导入
    48 driver._switch_to.alert.accept()
    49 
    50 # 弹窗有accept() 和dismiss()
    51 
    52 driver.find_element_by_name("keyword").send_keys("iphone")
    53 driver.find_element_by_name("keyword").submit()
    54 
    55 js2 = 'document.getElementsByClassName("p1")[0].childNodes[1].removeAttribute("target")'
    56 driver.execute_script(js2)
    57 
    58 driver.find_element_by_css_selector("body > div.shopCon.w1100 > div.ShopboxR.fl > div.protect_con > div > p > a").click()
    59 
    60 driver.find_element_by_id("joinCarButton").click()
    61 # driver.find_element_by_link_text("加入购物车").click()
    62 driver.find_element_by_css_selector("body > div.shop_last.w1100 > div.other_shopl.fl > div.shopCar_T > span.shopCar_T_span3").click()
    63 driver.find_element_by_css_selector("body > div.shopCarbox.w1100 > div:nth-child(4) > div:nth-child(3) > a").click()
    64 
    65 driver.find_element_by_class_name("add-address").click()
    66 driver.find_element_by_name("address[address_name]").send_keys("那么骄傲")
    67 driver.find_element_by_name("address[mobile]").send_keys("186181818186")
    68 
    69 # select city ,select 是网页下拉框元素,一般通过find_elements然后通过数组获取,select_by_value;select_by_visible_text;select_by_index来定位具体选择项
    70 city = driver.find_elements_by_class_name("add-new-area-select")[0]
    71 Select(city).select_by_index(3)
    72 city1 = driver.find_elements_by_class_name("add-new-area-select")[1]
    73 Select(city1).select_by_index(1)
    74 city2 = driver.find_elements_by_class_name("add-new-area-select")[2]
    75 Select(city2).select_by_index(6)
    76 
    77 driver.find_element_by_name("address[address]").send_keys("anywhere")
    78 driver.find_element_by_name("address[zipcode]").send_keys("00000")
    79 driver.find_element_by_class_name("aui_state_highlight").click()

    下次回顾整理一下,然后写一下ActionChains.

    2017-09-14  10:08:52

  • 相关阅读:
    on SDN
    距离矢量路由协议中路由环路问题的解决方法:
    图的基本算法(BFS和DFS)
    OSPF邻居状态机
    Dijkstra 算法,用于对有权图进行搜索,找出图中两点的最短距离
    关于Dijkstra算法
    RIP路由协议及工作原理
    帧中继网络 (转)
    OSPF建立邻居、邻接关系 学习笔记
    OSPF中 hello报文的 内容
  • 原文地址:https://www.cnblogs.com/good-time/p/7518035.html
Copyright © 2011-2022 走看看