如何在Selenium 2 python中捕获弹出窗口

时间:2012-01-22 07:51:16

标签: python selenium

我今晚刚开始使用Selenium 2,所以这将是非常基本的(我希望......)。

我正在尝试在http://contentparadise.com/

登录我的帐户

我转到登录页面https://www.contentparadise.com/signin.aspx,然后输入id / pw,然后提交。但即使使用正确的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()

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:0)

在下面的链接中搜索“弹出对话框”..如果您想了解更多信息,搜索您在Google中找到的代码,您将获得一些好东西; - )

http://readthedocs.org/docs/selenium-python/en/latest/navigating.html?highlight=popup