Heim  >  Artikel  >  Backend-Entwicklung  >  Seleniums Beispielcode für die automatische Anmeldung

Seleniums Beispielcode für die automatische Anmeldung

零下一度
零下一度Original
2017-06-30 14:21:532109Durchsuche

Verwenden Sie Selenium und die Codierungsplattform (Sie können das Verifizierungscodebild nicht selbst analysieren, daher müssen Sie eine Verbindung zur Codierungsplattform herstellen, um den Bildverifizierungscode zu analysieren), um sich automatisch bei der Amazon-Website anzumelden und die E-Mail zu ändern Adresse und Passwort an das Konto gebunden.

Logik: Simulieren Sie den Betrieb des Browsers, geben Sie die Daten in das Positionierungselement ein, laden Sie den Bildbestätigungscode basierend auf den Attributen des Seitenelements zur Analyse herunter, füllen Sie den Bestätigungscode automatisch aus und realisieren Sie automatisierte Vorgänge.

Um den Chrome-Browser zu verwenden, müssen Sie die entsprechende Version von Webdriver herunterladen.

#coding=utf-8from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import WebDriverWaitimport time ,sys, requests, jsonclass Browser(object):def __init__(self,url):
        self.browser = webdriver.Chrome()
        self.browser.maximize_window()
        self.url = url
        self.browser.get(self.url)def get_element_by_id(self,element_id):        return self.browser.find_element_by_id(element_id)def get_element_by_class(self,_class):return self.browser.find_element_by_class_name(_class)def get_element_by_text(self,text):return self.browser.find_element_by_link_text(text)def get_screenshot(self,file):return self.browser.get_screenshot_as_file(file)    def waitfor(self,element_id):return WebDriverWait(self.browser,10).until(lambda b:b.find_element_by_id(element_id).is_displayed())def upload_code_check():
    url = ':5678/api.php?method=upload'print url
    data = {}
    data.update({'username':'xxxxx'})
    data.update({'password':'xxxxx'})
    data.update({'codetype':'5000'})
    data.update({'appid':'1'})
    data.update({'appkey':'22cc5376925e9387a23cf797cb9ba745'})
    data.update({'timeout':'60'})
    data.update({'version':'YAPI/WEB v1.0.0'})
    data.update({'showimage':'1'})
    files = {'file':('dd.jpg',open('C://dd.jpg','rb'),'image/jpeg')}
    res = requests.post(url,data=data,files=files)
    res_json = json.loads(res.content)print res.contentreturn res_json 
    

def get_code_check_results(url1):while True:
        res1 = requests.get(url1)
        res1 = json.loads(res1.content)if res1['ret'] == 0:breakreturn res1def get_image(img_url):
    img = requests.get(img_url)
    img_f = open('C://dd.jpg','w+b')
    img_f.write(img.content)
    img_f.close()return img              

def main():
    url = ''count = 'xxxxxxx'pwd = 'xxxxxxxx'pwd_new = 'xxxxxxx'#email_new = 'xxxxx@qq.com'email_new = 'xxxxxxxx@qq.com'browser = Browser(url)if browser.waitfor('nav-link-yourAccount'):
        browser.get_element_by_id('nav-link-yourAccount').click()else:print 'connect timeout'sys.exit(1)if browser.waitfor('ap_email'):
        browser.get_element_by_id('ap_email').send_keys(count)
        browser.get_element_by_id('ap_password').send_keys(pwd)
        browser.get_element_by_id('signInSubmit').click()try:
            error = browser.get_element_by_id('auth-error-message-box')print 'login error'except Exception:passelse:print 'connect timeout'sys.exit(1)if browser.waitfor('nav-link-yourAccount'):
        browser.get_element_by_id('nav-link-yourAccount').click()else:print 'connect timeout'sys.exit(1)try:
        text = browser.get_element_by_text(u'登录和安全设置')
        text.click()
        email = browser.get_element_by_id('auth-cnep-edit-email-button')
        email.click()if browser.waitfor('ap_email_new'):
            browser.get_element_by_id('ap_email_new').send_keys(email_new)
            browser.get_element_by_id('ap_email_new_check').send_keys(email_new)
            browser.get_element_by_id('ap_password').send_keys(pwd)            
            yanzhenma = browser.get_element_by_id('auth-captcha-image')
            img_url = yanzhenma.get_attribute('src')
            img_url = img_url.replace('&','&')print img_url
            img = get_image(img_url)
            res_json = upload_code_check()
           
            url1 = ":5678/api.php?method=result&cid=" + str(res_json['cid'])print url1
            res1 = get_code_check_results(url1)print res1['text']
            yzm = res1['text']print yzmif yzm:
                browser.get_element_by_id('auth-captcha-guess').send_keys(str(yzm))
                browser.get_element_by_id('cnep_1B_submit_button').click()if browser.waitfor('auth-success-message-box'):
                browser.get_element_by_id('auth-cnep-edit-password-button').click()print 'success modify email'if browser.waitfor('ap_password_new_check'):
                browser.get_element_by_id('ap_password').send_keys(pwd)
                browser.get_element_by_id('ap_password_new').send_keys(pwd_new)
                browser.get_element_by_id('ap_password_new_check').send_keys(pwd_new)
                auth_img_url = browser.get_element_by_id('auth-captcha-image')
                img_url2 = auth_img_url.get_attribute('src').replace('&','&')
                img2 = get_image(img_url2)
                res_json = upload_code_check()
                url2 = ":5678/api.php?method=result&cid=" + str(res_json['cid'])print url2
                res2 = get_code_check_results(url2)print res2['text']
                yzm2 = res2['text']print yzm2if yzm2:
                    browser.get_element_by_id('auth-captcha-guess').send_keys(str(yzm2))
                    browser.get_element_by_id('cnep_1D_submit_button').click()     
        except NoSuchElementException,e:print(e)    

if __name__ == "__main__":
    main()

Das obige ist der detaillierte Inhalt vonSeleniums Beispielcode für die automatische Anmeldung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn