Как распознать новый появившийся элемент на новом сайте (изображение) Python Selenium - PullRequest
0 голосов
/ 03 ноября 2019

Я создал небольшую программу с python selenium для автоматического клика на некоторых изображениях, что приводит меня к сторонним сайтам, где мне нужно оставаться 30-100 секунд, а затем зарабатывать немного денег.

Весь процесс, которого я хочу достичь (некоторые из них уже завершены):

  1. Откройте драйвер Chrome [Готово]
  2. Откройте конкретный сайт [Готово]
  3. Нажмите кнопку входа [Готово]
  4. Отправьте имя пользователя и пароль в определенные поля и нажмите кнопку входа [Готово]
  5. Прокрутите вниз до пикселя y [Готово]
  6. Нажмите случайную категорию (7) и подождите несколько секунд. [Готово]
  7. Найдите «изображение ссылки» и щелкните по нему (открывает сторонний сайт) [Готово]
  8. Подождитедо тех пор, пока сторонний сайт не закроется автоматически, сайт заработанных денег автоматически откроет страницу оценки.
  9. Теперь на сайте оценки есть изображение, я хочу распознать это изображение. Если это изображение видно, я хочу закрыть текущую вкладку. Мне нужно что-то распознать, если этот рейтинг сайта виден, чтобы знать, что сторонний сайт был выполнен. После закрытия сайта оценки мы находимся в точке 7, где мы можем искать новые «изображения ссылок».
  10. Делайте этот процесс до тех пор, пока «изображений ссылок» больше не будет.
  11. Если это произойдет, прокрутите вниз до нижней части сайта, где обычно находятся «изображения ссылок», выполните поиск по категориям. и нажмите на случайную категорию снова. Снова перейдите к пункту 7.

Таким образом, в основном, это щелчок по категориям, поиск по «ссылочным изображениям», нажатие на него, распознавание сайта с небольшим изображением, закрытие вкладки и повторный поиск. Когда больше не будет ссылок на изображения, перейдите в конец сайта и нажмите на новую категорию. Повторите весь этот процесс.

Изображение на сайте курса:

"i[class='fa fa-check-circle-o fa-lg clickads-check-circle']"

Мои основные проблемы: я не знаю, как распознать это изображение и как после этого закрыть вкладку. Я не знаю, как автоматически повторить весь процесс после того, как мы вернемся на сайт, где находятся «изображения ссылок». Я не очень знаком с python.

Моя программа:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from random import randrange
import time

driver = webdriver.Chrome(executable_path=r"C:\Users\Marvin\Desktop\chromedriver.exe")
driver.get("http:/www.xyz.de")
driver.maximize_window()
driver.implicitly_wait(10)

assert "Webseiten finden | Geld verdienen | Werbung machen | xyz" in driver.title

time.sleep(3)
driver.find_element_by_xpath("//*[@id='tabs']/ul/li[2]/a").click() #Click on login section

assert "Zum Mitgliederbereich bei xyz" in driver.title

driver.find_element_by_xpath("//*[@id='LoginForm_login_name']").send_keys("username") #send username
driver.find_element_by_xpath("//*[@id='LoginForm_login_password']").send_keys("password") #send password

time.sleep(3)

driver.find_element_by_xpath("//*[@id='loginForm']/fieldset/div[2]/div[5]/div[2]/input").click() #click on login button
driver.implicitly_wait(10)
time.sleep(3)
driver.execute_script("window.scrollBy(0, 1000)") #scroll down to categorys section

categorys = ["//*[@id='category']/section[1]",
             "//*[@id='category']/section[2]",
             "//*[@id='category']/section[3]",
             "//*[@id='category']/section[4]",
             "//*[@id='category']/section[5]",
             "//*[@id='category']/section[6]",
             "//*[@id='category']/section[7]"]
time.sleep(3)
driver.find_element_by_xpath(categorys[randrange(len(categorys))]).click() #click on random category
driver.implicitly_wait(10)
time.sleep(10)

linkImage = driver.find_element_by_css_selector("a[class='catshadow adshelper']") #find a linkImage
driver.execute_script("arguments[0].scrollIntoView();", linkImage) #scroll to this linkImage

time.sleep(10)
driver.find_element_by_css_selector("a[class='catshadow adshelper']").click() #click on this linkImage

driver.implicitly_wait(250)
time.sleep(100)
if driver.find_elements_by_css_selector("i[class='fa fa-check-circle-o fa-lg clickads-check-circle']") :
    driver.quit() #does not work, it should close the actual tab when seeing this elemtn "fa fa-check-circle"

Я надеюсь, что кто-то, кто знаком с селеном и python, сможет помочь мне с этой маленькой программой:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...