zoukankan      html  css  js  c++  java
  • selenium实战

    1.多页面跳转

    案例描述:百度搜索bing,bing搜索selenium,使用自动化脚本测试,利用闭包实现无线循环,如果错误就输出程序运行失败,不结束程序运行。

    import time
    from selenium import webdriver
    import datetime
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver import ActionChains
    
    
    def func(i):
        try:
            start_time = datetime.datetime.now()
            print("第%d次开始时间:" % i, start_time)
            driver = webdriver.Firefox()
            ActionChains(driver)
            data = driver.get(" http://www.baidu.com")
            element = driver.find_element_by_xpath(".//*[@id='kw']")
            element.click()
            element.send_keys("bing")
            element.send_keys(Keys.ENTER)
            time.sleep(2)
            ele = driver.find_element_by_xpath(".//*[@id='1']/h3/a[1]")
            ActionChains(driver).double_click(ele).perform()
            time.sleep(5)
            handles = driver.window_handles
            driver.switch_to.window(handles[-1])
            aa = driver.find_element_by_css_selector("#sb_form_q")
            aa.send_keys("selenium")
            aa.send_keys(Keys.ENTER)
            abc = driver.find_element_by_xpath(".//*[@id='b_results']/li[3]/div[1]/h2/a")
            ActionChains(driver).double_click(abc).perform()
            time.sleep(5)
            print(5)
            time.sleep(1)
            print(4)
            time.sleep(1)
            print("……")
            time.sleep(3)
            print(1)
            driver.close()
            end_time = datetime.datetime.now()
            print("第%d次结束时间:" % i, end_time)
            time_cha = end_time - start_time
            print("第%d次时间差:" % i, time_cha)
            i += 1
        except Exception as e:
            # raise e
            print("程序运行失败")
        func(i)
    
    
    func(1)
    
    

    2. qq 空间登录(frame切换)

    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get("https://qzone.qq.com/")
    time.sleep(2)
    login = driver.find_element_by_id("login_frame")
    driver.switch_to.frame(login)
    zhmadl = driver.find_element_by_id("switcher_plogin")
    zhmadl.click()
    time.sleep(2)
    username = driver.find_element_by_id("u")
    username.click()
    username.send_keys("XXXXXXX")
    time.sleep(2)
    password = driver.find_element_by_id("p")
    password.send_keys("XXXXXXX")
    time.sleep(2)
    dl = driver.find_element_by_id("login_button")
    dl.click()
    

    3.淘宝京东购物筛选及添加购物车

    由于淘宝出现人机验证,出现滑块验证不通过的情况,具体解决方法还有待解决。就拿京东来实现自动化购物的脚本。

    from selenium import webdriver
    import time
    
    driver = webdriver.Firefox()
    driver.get(
        "https://www.jd.com/?cu=true&utm_source=baidu-search&utm_medium=cpc&utm_campaign=t_262767352_baidusearch&utm_term=106807362512_0_ee521dbb631241d6a75682dc3f57a287")
    driver.find_element_by_xpath(".//*[@id='J_user']/div/div[1]/div[2]/p/a[1]").click()
    time.sleep(5)
    headles = driver.window_handles
    driver.switch_to.window(headles[-1])
    driver.find_element_by_xpath(".//*[@id='content']/div[2]/div[1]/div/div[3]/a").click()
    time.sleep(2)
    username = driver.find_element_by_id("loginname")
    username.clear()
    username.send_keys("XXXXX")
    password = driver.find_element_by_id("nloginpwd")
    password.clear()
    password.send_keys("XXXXX")
    driver.find_element_by_id("loginsubmit").click()
    time.sleep(9)
    headles = driver.window_handles
    driver.switch_to.window(headles[-1])
    ssk = driver.find_element_by_id("key")
    ssk.send_keys("避孕套")
    # 点击搜索
    driver.find_element_by_xpath(".//*[@id='search']/div/div[2]/button").click()
    time.sleep(5)
    # 选择邦杰士
    driver.find_element_by_xpath(".//*[@id='brand-9233']/a").click()
    time.sleep(5)
    # 选择常规
    driver.find_element_by_xpath(".//*[@id='J_selector']/div[1]/div/div[2]/div[1]/ul/li[5]/a").click()
    time.sleep(5)
    # 选择标准
    driver.find_element_by_xpath(".//*[@id='J_selector']/div[1]/div/div[2]/div[1]/ul/li[1]/a").click()
    time.sleep(5)
    # 选择乳胶
    driver.find_element_by_xpath(".//*[@id='J_selector']/div[2]/div/div[2]/div[1]/ul/li[1]/a").click()
    time.sleep(5)
    # 选择进口
    driver.find_element_by_xpath(".//*[@id='J_selector']/div[2]/div/div[2]/div[1]/ul/li[2]/a").click()
    time.sleep(5)
    # 选择仅显示有货
    driver.find_element_by_xpath(".//*[@id='J_feature']/ul/li[3]/a").click()
    time.sleep(5)
    # 点击图片
    driver.find_element_by_xpath(".//*[@id='J_goodsList']/ul/li[1]/div/div[1]/a/img").click()
    time.sleep(5)
    headles = driver.window_handles
    driver.switch_to.window(headles[-1])
    # 添加数量
    driver.find_element_by_xpath(".//*[@id='choose-btns']/div/div/a[2]").click()
    time.sleep(5)
    driver.find_element_by_xpath(".//*[@id='choose-btns']/div/div/a[2]").click()
    time.sleep(5)
    # 加入购物车
    driver.find_element_by_xpath(".//*[@id='InitCartUrl']").click()
    time.sleep(5)
    headles = driver.window_handles
    driver.switch_to.window(headles[-1])
    # 显示购物车
    driver.find_element_by_xpath(".//*[@id='result']/div/div/div[2]/div[3]/a[1]").click()
    time.sleep(5)
    headles = driver.window_handles
    driver.switch_to.window(headles[-1])
    

    4.128邮箱,163邮箱登录

    因为128邮箱,163邮箱的id都是随机的,定位起来可能会有点困难,但是问题不大,我们可以使用自己写x_pass表达式定位,避免使用id即可完成操作。其他的不变。

  • 相关阅读:
    Linux上安装软件
    VIM的使用
    Linux命令(系统管理)
    django潜心之路4--模型
    django潜行之路3-模板
    django潜行之路2---视图
    django潜行之路1
    sql基础
    Mysql数据库总结
    反爬虫机制
  • 原文地址:https://www.cnblogs.com/zjldeboke/p/14886957.html
Copyright © 2011-2022 走看看