我想创建一个机器人来填补现场的空白。但不幸的是它不起作用;我的意思是没有看到或者我不知道它的问题是什么。
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from datetime import datetime
def login_at_specific_time(username, password, target_time):
driver_path = "path_to_driver"
options = webdriver.ChromeOptions()
options.binary_location = driver_path
driver = webdriver.Chrome(options=options)
website_url = "https://www.instagram.com/accounts/login/?source=auth_switcher"
driver.get(website_url)
while True:
current_time = datetime.now().strftime("%H:%M")
if current_time >= target_time:
username_field = driver.find_element(By.ID, "usernameUserInput")
username_field.send_keys(username)
password_field = driver.find_element(By.ID, "password")
password_field.send_keys(password)
break
time.sleep(10)
driver.quit()
login_at_specific_time(username="aabbcc", password="12345678a", target_time="21.45")
这里将用户名发送到用户名输入。
它让页面首先加载,然后查找输入元素(Instagram 的恰好包含 HTML 属性
name=username
)。
import time
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
driver = webdriver.Chrome()
website_url = "https://www.instagram.com/accounts/login/?source=auth_switcher"
driver.get(website_url)
wait = WebDriverWait(driver, 10)
username_field = wait.until(EC.presence_of_element_located((By.NAME, "username")))
username_field.send_keys("some_username_or_variable")
time.sleep(10)
driver.quit()
理想情况下,页面会同时加载用户名和密码字段,因此您可以毫无问题地添加它们。将其正确地包含在您的时间功能中。
此外,我会将您的循环重构为以下格式:
while datetime.now().strftime("%H:%M") < target_time:
pass
username_field = driver.find_element(...