2012-01-22 8 views
1

今夜はSelenium 2を使い始めましたので、これは非常に基本的なものになります(私は願っています...)。Selenium 2 Pythonでポップアップをトラップする方法

私はページhttps://www.contentparadise.com/signin.aspxのサインインに行くと提出した後、ID/PWを入力することができる午前http://contentparadise.com/

で私のアカウントにログオンしようとしています。しかし、正しいid/pwを指定しても、サインインページに戻ります。小さなメッセージボックスに「次のエラーが発生しました」という単語が追加されています。明らかにコード内のid/pwが間違っています。これをエラーとして検出しようとしていますが、実際のid/pwでもそれを取得します。

このメッセージボックスを検出して読み取るには、どうすれば正しいセットがホームページに移動しないのですか?

私は別のサイトで同じコードを使用し、正しいセットを使用すると、私は必要に応じてホームページに移動します。

これはjavascriptを使用したサインインページのケースですか?サインインページのソースを見る場合は、フォームのその部分を開始する文字列 ""を探します。ここで

コードです:あなたがグーグルで見つけるそのコードの検索、詳細を知りたい場合は...下のリンクにある「ポップアップダイアログ」の

from selenium import webdriver 
import sys 
import os 

userID = "wajahbaru" 
pw = "marmalade" 

wdrv = webdriver.Firefox() 
wdrv.get("https://www.contentparadise.com/signin.aspx") 

print "Page #1 title is: " + wdrv.title; # should be "Sign In" 

unamefield = wdrv.find_element_by_name("ctl00$ContentPlaceHolder1$txtUserName").send_keys(userID) 
pwdfield = wdrv.find_element_by_name("ctl00$ContentPlaceHolder1$txtPassword").send_keys(pw) 
pwdfield = wdrv.find_element_by_name("ctl00$ContentPlaceHolder1$btnLogin").click() 

print "Page #2 title is: " + wdrv.title; # if logged in this should be "Content Paradise: Buy or Sell Software, 2D Content, 3D Models and Audio." 

wdrv.get_screenshot_as_file("test.jpg") 
wdrv.quit() 

答えて

1

はどのように検出し、このメッセージボックスを読んで、なぜ正しいセットは、ホームページに移動しないのですか?

あなたはid="error"を持つ要素を検索でき、エラーメッセージボックスを検出するには、次の

#!/usr/bin/env python 
from contextlib import closing 
from selenium.webdriver import Firefox as Browser 
from selenium.webdriver.support.ui import WebDriverWait 

timeout = 10 # seconds 

with closing(Browser()) as browser: 
    browser.get('https://www.contentparadise.com/signin.aspx') 
    assert browser.title == "Sign In" 
    login, password, submit = map(browser.find_element_by_id, 
     ['ctl00_ContentPlaceHolder1_txtUserName', 
     'ctl00_ContentPlaceHolder1_txtPassword', 
     'ctl00_ContentPlaceHolder1_btnLogin']) 
    enter_text = lambda x, text: (x.clear(), x.send_keys(text)) 
    enter_text(login, "abc") 
    enter_text(password, "pas$W0rd") 
    submit.click() 

    # wait for error or success 
    value = WebDriverWait(browser, timeout).until(
     lambda x: ("Content Paradise" in x.title and "ok" or 
        x.find_element_by_id('error'))) 
    if value != "ok": 
     print "error:", value.text 
    browser.get_screenshot_as_file('test.jpg') 
+0

OK、それは私にアラートのテキストを示します - ありがとう。ところで、私は答えがあったという電子メール通知を受け取っていません... – Stephen

関連する問題