如何在Selenium 2 Python中捕获弹窗
我今晚刚开始使用Selenium 2,所以这部分内容会非常基础(希望如此...)。
我正在尝试登录我的账户,网址是 http://contentparadise.com/
我进入了登录页面 https://www.contentparadise.com/signin.aspx,可以输入我的账号和密码,然后提交。但是即使输入正确的账号和密码,它还是把我带回了登录页面,并弹出一个小消息框,上面写着“发生了以下错误”。显然,代码中的账号和密码是错误的,我想把这个当作错误来处理,但即使用我真实的账号和密码也会出现这个问题。
我该如何检测并读取这个消息框?为什么正确的账号和密码不让我进入主页呢?
我在另一个网站上使用相同的代码,输入正确的账号和密码,它就能正常带我进入主页。
这是不是因为登录页面使用了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 个回答
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
在下面的链接中搜索“弹出对话框”……如果你想了解更多,可以把你找到的代码在谷歌上搜索一下,应该能找到一些不错的资料哦;-)
http://readthedocs.org/docs/selenium-python/en/latest/navigating.html?highlight=popup