调试代码
lure.py
import argparse
import sys
import time
import pandas as pd
from pandas import DataFrame
from selenium import webdriver
from selenium.webdriver.common.by import By
# 传值判断
if len(sys.argv) != 4:
sys.exit(1)
# 读取excel
df: DataFrame = pd.read_excel(sys.argv[3], sheet_name='Sheet1')
# Chrome浏览器
driver = webdriver.Chrome()
driver.get('网站')
time.sleep(1)
# By定位 内置账号密码登录
phone = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div/div/div/div/div[2]/div[1]/div/div['
'1]/div/div[2]/input')
phone.send_keys(sys.argv[1])
driver.implicitly_wait(5)
password = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div/div/div/div/div[2]/div[1]/div/div['
'2]/div/div/div[2]/input')
password.send_keys(sys.argv[2])
driver.implicitly_wait(5)
logon = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div/div/div/div/div[2]/div[1]/div/a')
logon.click()
time.sleep(1)
# 进入页面
driver.get('网站')
# 切换到当前窗口
driver.switch_to.window(driver.window_handles[-1])
driver.implicitly_wait(5)
xm = []
sjh = []
c1 = 0
c2 = 0
for idx, row in df.iterrows():
xm = row['姓名']
sjh = row['手机号']
# 姓名
driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/form/div/div/div[1]/div['
'2]/div/div[2]/input').send_keys(xm)
time.sleep(0.3)
# 性别男
male = driver.find_element(By.XPATH, '/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/form/div/div/div['
'1]/div[3]/div[1]/div/div[2]/label[1]/span[2]')
driver.execute_script("arguments[0].click();", male)
time.sleep(0.2)
# 手机号类别
driver.find_element(By.CSS_SELECTOR,
'div > div > form > div > div > div > div:nth-child(4) > div.am-list-line > div '
'> div > label:nth-child(1) > span.am-radio:first-child').click()
driver.implicitly_wait(10)
time.sleep(0.2)
# 手机号
phone = driver.find_element(By.CSS_SELECTOR, 'div > div > form > div > div > div > '
'div.am-list-item.am-input-item.am-list-item-middle.add-customer-input'
'.undefined.add-customer-phone > div > div.am-input-control > input')
js1 = "arguments[0].scrollIntoView();"
driver.execute_script(js1, phone)
phone.send_keys(sjh)
time.sleep(0.2)
# 打开楼盘选择
driver.find_element(By.CSS_SELECTOR, 'div > div > form > div > div > div.am-list-item.am-list-item-middle > '
'div.am-list-line > div > div').click()
driver.implicitly_wait(3)
# 选择楼盘
driver.find_element(By.CSS_SELECTOR, '#divBuildingScroll > div > div:nth-child(3)').click()
driver.implicitly_wait(3)
time.sleep(1)
# 推荐
driver.find_element(By.CSS_SELECTOR, 'div > div > form > div > div > div > a').click()
time.sleep(1)
# 判断推荐是否成功
report = '报备成功'
failure1 = '推荐失败'
success = driver.find_elements(By.LINK_TEXT, '报备成功')
failure = driver.find_elements(By.LINK_TEXT, '推荐失败')
if success == report:
c1 = c1 + 1
data = {'结果': ['报备成功']}
else:
c2 = c2 + 1
data = {'结果': ['报备失败']}
data = pd.DataFrame(data)
# 将新数据与旧数据合并起来
data1 = pd.concat([df, data])
data1.to_excel(sys.argv[3], index=False)
# 继续推荐
driver.find_element(By.CSS_SELECTOR, 'div > div.report-done__btn.white.undefined').click()
driver.implicitly_wait(20)
# 传递参数
# 初始化参数构造器
parser = argparse.ArgumentParser()
# 在参数命令行添加两个命令行参数
parser.add_argument('--cc1', type=str, default=c1)
parser.add_argument('--cc2', type=str, default=c2)
# 获取所有命令行参数
args = parser.parse_args()
front.py
import sys
import subprocess
from tkinter import *
from lure import args
from tkinter import filedialog
def end():
sys.exit(0)
def select():
filename = filedialog.askopenfilename()
if filename != '':
path.set(filename)
def bring():
global b1, b2, b3
b1 = inp1.get()
b2 = inp2.get()
b3 = inp3.get()
subprocess.Popen(['python', 'lure.py', b1, b2, b3])
return None
# 图形化界面
root = Tk()
root.title('明源云客报备')
root.geometry('500x400')
path = StringVar()
a1 = StringVar()
a2 = StringVar()
b1, b2, b3 = None, None, None
lb1 = Label(root, text='账号', relief=RAISED)
lb1.place(relx=0.05, rely=0.1, relwidth=0.4, relheight=0.1)
inp1 = Entry(root, textvariable=a1)
inp1.place(relx=0.5, rely=0.1, relwidth=0.4, relheight=0.1)
lb2 = Label(root, text='密码', relief=RAISED)
lb2.place(relx=0.05, rely=0.25, relwidth=0.4, relheight=0.1)
inp2 = Entry(root, textvariable=a2)
inp2.place(relx=0.5, rely=0.25, relwidth=0.4, relheight=0.1)
inp3 = Entry(root, textvariable=path)
inp3.place(relx=0.5, rely=0.4, relwidth=0.4, relheight=0.1)
btn1 = Button(text='请选择源文件', command=select)
btn1.place(relx=0.05, rely=0.4, relwidth=0.4, relheight=0.1)
btn2 = Button(root, text='开始', command=bring)
btn2.place(relx=0.05, rely=0.55, relwidth=0.4, relheight=0.1)
btn3 = Button(root, text='结束', command=end)
btn3.place(relx=0.5, rely=0.55, relwidth=0.4, relheight=0.1)
txt = Text(root, relief=SUNKEN)
txt.insert(END, ('报备成功:' + str(args.cc1) + '组' + '\n' + '报备失败:' + str(args.cc2) + '组'))
txt.place(relx=0.05, rely=0.7, relwidth=0.85, relheight=0.25)
root.mainloop()
请求优化代码 使程序可以运行 谢谢