zoukankan      html  css  js  c++  java
  • Selenium实现去哪儿网登录和搜查机票

    #coding=utf-8
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from PIL import Image
    import time
    from fateadm_api import TestFunc
    global driver
    try:
        driver = webdriver.Chrome()
        driver.get("https://user.qunar.com/passport/login.jsp?")            #去哪儿网址
        driver.find_element_by_xpath("/html/body/div[2]/div[3]/div[2]/div[1]/a").click()            #点击账号密码登录
        driver.implicitly_wait(20)
        driver.maximize_window()
        driver.save_screenshot("D:\web.png")                              #将当前网页截图
        imgcode = driver.find_element_by_id("vcodeImg")                    #找到验证码图片元素
        left = imgcode.location["x"]                                       #获取相对坐标
        top = imgcode.location["y"]
        right = left + imgcode.size["width"]                               #获取长度何况度
        bottom = top + imgcode.size["height"]
        im = Image.open("D:\web.png")                                     #打开网页截图
        im = im.crop((left, top, right, bottom))                           #按照获取的验证码的坐标,从网页截图中再截取验证码
        im.save("D:\webtest.png")                                         #保存验证码图片
        driver.find_element_by_name("username").send_keys("用户账号")       #登录去哪儿
        driver.find_element_by_name("password").send_keys("用户密码")      
        driver.find_element_by_name("chkrem").click()
        text = str(TestFunc()) #此处是获取验证码识别结果                                            
        #TestFunc()是第三方平台斐斐打码的接口,用来识别验证码,下载地址http://docs.fateadm.com/web/#/1?page_id=37                               
        print(text)
        driver.find_element_by_name("vcode").send_keys(text)
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        driver.find_element_by_class_name("q_header_mini_link").click()
        time.sleep(3)
        driver.find_element_by_id("js_searchtype_roundtrip").click()
        #选择前往日期,日期尝试用过普通寻找元素的方法做,但不管用,所以采用jquery方法
        jq = '$("#js_domestic_fromdate").val("2020-06-07")'
        driver.execute_script(jq)
        #选择返回日期
        jq1 = '$("#js_domestic_todate").val("2020-06-13")'
        driver.execute_script(jq1)
        #选择出发城市
        a = driver.find_element_by_name("fromCity")
        a.clear()
        a.send_keys("上海")
        #选择到达城市
        b = driver.find_element_by_name("toCity")
        b.send_keys("海口")
        #点击搜索
        b = driver.find_element_by_xpath(".//span[@class='p_btn']/button")
        ActionChains(driver).click(b).perform()
    finally:
        a = "n"
        while a == "n":
            a = input("是否关闭浏览器驱动?y/n
    ")
            if a == "n":
                pass
            else:
                time.sleep(3)
                driver.quit()
    

    验证码识别参考书籍:田春亮的selenium3+python3

  • 相关阅读:
    正则,ant antd from验证input框只能输入数字
    React 实现简易轮播图
    Moment.js ,JavaScript 日期处理类库
    JavaScript中准确的判断数据类型--四种方法
    介绍:一款可以描绘圆圈进度条的jQuery插件(可用作统计图)
    给网页增加水印的方法,react
    IntelliJ IDEA创建web项目及异常问题解决
    CSS 代码是什么?(转)
    JSP入门:介绍什么是JSP和Servlet(转)
    INTELLIJ IDEA集成CHECKSTYLE(转)
  • 原文地址:https://www.cnblogs.com/loveniko/p/13036164.html
Copyright © 2011-2022 走看看