Selenium Python обнаруживает обновление - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать бота для входа на сайт моей школы, но проблема в том, что он перегружен запросами на неделе, выбранной классом. Основная цель бота - пытаться снова и снова, пока он не попадет в систему.Когда система принимает N количество студентов, сервер скажет, что больше не будет принимать студентов, и перенаправит вас на страницу входа, а с меткой будет заполнено.

Мой код:

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
from datetime import datetime
import time 
f = open('kullanici.txt', 'r')
veri = f.read().split(':')
print(veri)
usernameStr = veri[0]
passwordStr = veri[1]
url= 'http://ogr.kocaeli.edu.tr/KOUBS/ogrenci/index.cfm'

delay = int(veri[2])

browser = webdriver.Chrome()
browser.get((url))

# fill in username and hit the next button
print("Başlangıç saati " + str(datetime.now().hour) + ":" + str(datetime.now().minute)+ ":" + str(datetime.now().second))
tryAmount = 1
errorAmount = 1
old_page = browser.find_element_by_tag_name('html')
print(datetime.now().month==9 and datetime.now().year == 2018)

if(datetime.now().month==9 and datetime.now().year == 2018):
    for i in range(1000):
        try:
            username = browser.find_element_by_id('OgrNo')
            username.send_keys(usernameStr)
            password = browser.find_element_by_id('Sifre')
            password.send_keys(passwordStr)
            signInButton = browser.find_element_by_id('Ara')
            signInButton.click()
            WebDriverWait(browser, delay).until(EC.staleness_of(old_page))
            print(str(tryAmount) + " kere denendi. " + str(datetime.now().hour) + ":" + str(datetime.now().minute)+ ":" + str(datetime.now().second))
            tryAmount += 1
        except Exception as e:
            if browser.current_url == url:
                print(str(e))
                print(str(errorAmount) + " kere hata alındı")
                browser.refresh()
                errorAmount += 1
            else:
                break

Основная проблема заключается в том, что сервер всегда изменяет длительность запроса в зависимости от перегрузки, и иногда он просто не дает ответа. Я пытаюсь увидеть конец моего запроса (он перенаправит меня назад и скажет, что он заполнен.) и нажмите снова, но он просто щелкает снова и снова бесконечно, не давая ему изменить логин.Как я могу решить это?

HTML, как это (последний пустой элемент p является тот):

<body>
<form name="CFForm_1" id="CFForm_1" method="POST" onsubmit="return _CF_checkCFForm_1(this)">
            <input type="hidden" name="LoggingOn" value="1">
            <div class="row">    
                <div class="col-lg-4 col-lg-offset-4" style="margin-top: 50px; border: solid 1px #CCC; border-radius: 5px;">
                    <div align="center" style="margin: 20px;"><img src="/KOUBS/CommonFiles/images/logokou.png" /></div>
                    <p align="center">

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