Я использую Selenium для автоматизации процесса и использую ChroPath, чтобы найти такие элементы, как XPath, для более легкого использования. Но иногда элементы не доступны;пример:
Элемент, который я пытаюсь найти
ChroPath
try:
P_Captcha_ButtonWait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH("//div[@class='antigate_solver recaptcha in_process']"))))
print("Captcha is being solved. Waiting 40 seconds...")
time.sleep(40)
CaptchaSolved = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@class='antigate_solver recaptcha solved']")))
time.sleep(3)
print("It's rocking!!!!")
driver.find_element_by_xpath(
"/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/p[3]/button[1]").click()
except:
P_Email_Verification = WebDriverWait(driver, 10).until(EC.presence_of_element_located((
By.XPATH, "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]")))
driver.find_element_by_xpath(
"/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]").click()
print("Something went wrong and idk why?")
Это строка кодаЯ написал для части Captcha, и я на самом деле использую расширение Anti-Captcha.com, и я хочу найти текст, который Анти-Captcha дает, когда он решает капчу. Это выглядит так: Anti-Captcha
Кроме того, веб-сайт, на котором я пробую это, - ProtonMail, страница, на которой вы проверяете себя, человек вы или нет.
Я уже кодировал ту часть, где вы проверяете себя, используя электронную почту, но я хочу, чтобы Captcha использовался в качестве основного использования, а E-Mail Verification в качестве ударной на случай, если с Captcha что-то пойдет не так.
Я пытался найти элемент, но единственное, что я смог найти, - это поиск изображений? Я был вынужден использовать PyAutoGui с абсолютными направлениями большую часть времени для некоторых элементов, таких как нажатие кнопки или щелчок в определенных полях с абсолютным направлением, потому что я не мог правильно найти XPath.
Я хотел бы знатьопыт поиска пользователями некоторых элементов.
Обновление:
Это еще одна попытка исправить код и попробовать другие методы, но все еще не работает.
try:
P_Captcha_ButtonWait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='status'][contains(.,'Solving is in process...')]")))
if P_Captcha_ButtonWait is True:
print("Captcha is being solved. Waiting 40 seconds...")
time.sleep(40)
CaptchaSolved = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@class='antigate_solver recaptcha solved'][contains(.,'Solved')]")))
if CaptchaSolved is True:
time.sleep(3)
print("It's rocking!!!!")
driver.find_element_by_xpath(
"/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/p[3]/button[1]").click()
except TimeoutException:
# P_Email_Verification = WebDriverWait(driver, 10).until(EC.presence_of_element_located((
# By.XPATH, "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]")))
# driver.find_element_by_xpath(
# "/html[1]/body[1]/div[2]/div[1]/div[1]/div[1]/form[1]/div[1]/div[1]/div[2]/label[1]/div[1]/input[1]").click()
print("Something went wrong and idk why?")
driver.close()
Я сделал строки в except
в качестве комментариев на данный момент, так как моя главная цель - исправить поиск элемента Анти-Капчи.
В основном, что бы я ни делал, try
не будет работать, потому что Элемент не 'основал. Я думал, чтобы заставить это работать по-другому;если опция Captcha доступна при выборе, водитель может подождать 30-80 секунд, пока не будет решен Captcha. (вот как долго анти-капча тратится примерно раз, чтобы найти капчу). Но иногда они занимают до 200 секунд, что приводит к ошибкам и вызывает сбой всего скрипта. Вот почему я хочу найти этот элемент, потому что он проще и поддерживает работу скрипта.