直接上代码
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# 创建 Chrome WebDriver 实例
driver = webdriver.Chrome()
# 打开登录页面
driver.get("https://www.xxx.com/user/login")
# 等待用户名、密码输入框和登录按钮可见
wait = WebDriverWait(driver, 10)
username_input = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#xxx"))) //用户名输入框<input id=xxx>
password_input = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#yyy"))) //密码输入框<input id=yyy>
login_button = wait.until(EC.visibility_of_element_located(
(By.CSS_SELECTOR, "#登录按钮的路径"))) // 右键审查元素 然后右键 Copy JS path
# 输入用户名和密码
username_input.clear()
username_input.send_keys("你的用户名")
password_input.clear()
password_input.send_keys("你的密码")
# 点击登录按钮
login_button.click()
time.sleep(2)
# 等待2s跳转到抢票页面
driver.get("https://www.xxx.com/") //抢票url
# 刷新页面直到按钮状态为指定内容
while True:
# 刷新页面
driver.refresh()
# 等待一段时间再刷新
time.sleep(0.5)
# 检查按钮是否可点击
button = driver.find_element(By.XPATH, '//button[@class="ant-btn ant-btn-primary"]/span[text()="抢票"]')
# 点击按钮
button.click()
# 退出循环
break
上面的XPath是一种用于在HTML文档中定位特定元素的表达式。具体来说,该XPath表达式是用于定位class属性为"ant-btn ant-btn-primary",且包含文本内容为"领取题目"的按钮元素。
XPath表达式的解析:
- `//button`:选择文档中的所有button元素。
- `[@class="ant-btn ant-btn-primary"]`:筛选class属性值为"ant-btn ant-btn-primary"的元素。
- `/span`:选择button元素下的span子元素。
- `[text()="领取题目"]`:筛选span元素的文本内容为"领取题目"的元素。
综合起来,该XPath表达式的作用是选择页面中特定class和文本的按钮元素。
下来是打包:
1. 安装PyInstaller:
打开命令提示符 (Command Prompt) 并执行以下命令来安装PyInstaller:
```
E:\Python\python.exe -m pip install pyinstaller
```
请确保将`E:\Python`替换为你实际的Python安装路径。
2. 打包成可执行文件:
在命令提示符中,切换到包含Python脚本的目录,并执行以下命令:
```
E:\Python\Scripts\pyinstaller.exe --onefile your_script_name.py
```
将`your_script_name.py`替换为你的Python脚本的文件名。
执行命令后,PyInstaller将会自动解析脚本及其依赖项,并在同一目录下生成一个名为`dist`的文件夹,其中包含打包好的可执行文件。
3. 运行可执行文件:
打开`dist`文件夹,在其中找到生成的可执行文件,双击运行即可。
出现小黑窗证明打包成功