#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