首页 新闻 赞助 找找看

selenium+python 处理表单中的提示信息

0
悬赏园豆:5 [已解决问题] 解决于 2018-01-26 10:38

在做登录的用例的时候,通过

driver.find_element_by_css_selector("span").text
可以定位获取到“请输入用户名”“请输入密码”,但却无法获取“用户名或密码错误”,请各位大神指教
网页代码如下:

输入效果图如下



        
问题补充:

代码如下

'''登录'''
def login(desc,username,userpsw):
    #定位用户名、密码、登录按键
    name = driver.find_element_by_css_selector("input[type='text']")
    password = driver.find_element_by_css_selector("input[type='password']")
    submit = driver.find_element_by_css_selector("input[type='button']")
    #清空上一次的输入
    name.clear()
    password.clear()
    #输入用户名密码,点击登录
    name.send_keys(username)
    password.send_keys(userpsw)
    submit.click()
    #密码为空情况验证
    emptylogin(desc,username,userpsw)


'''存在错误输入的情况'''
def emptylogin(desc,username,userpsw):
    text = driver.find_element_by_css_selector("span").text
    if(username==""):                                            #用户名为空,提示用户名不能为空
        print("text=", text)
        assertreminder(desc,text, "请输入用户名!")
    if(username!="" and userpsw=="" ):                           #用户名不为空,密码为空,提示密码不能为空
        print("text=", text)
        assertreminder(desc,text,"请输入密码!")
    if(username!="" and userpsw!=""):
        for k, v in correctaccount.items():
            if ((username != k) or (userpsw != v)):
                print("text=",text)
                assertreminder(desc, text, "用户名或密码错误!")

'''判断登录提示文字是否正确'''
def assertreminder(desc,now,should):
    if(now!=should):
        print(desc,"提示不正确")
    else:
        print(desc,"提示正确")
登录

运行结果如下

代码羡的主页 代码羡 | 初学一级 | 园豆:69
提问于:2017-11-16 09:54
< >
分享
最佳答案
1

"用户名或密码错误"没加载出来吧

你先把用户名和密码填上,然后点击登录,然后sleep一下,等浏览器反应过来,然后获取元素.

收获园豆:5
Masako | 小虾三级 |园豆:1893 | 2017-11-17 11:17
其他回答(2)
0

不一样的么 都是提示 没道理啊

ycyzharry | 园豆:25639 (高人七级) | 2017-11-16 10:21

我也很醉,代码和运行结果我都补充上去了

支持(0) 反对(0) 代码羡 | 园豆:69 (初学一级) | 2017-11-16 10:34
0

兄台,我b/s端的,这代码不太懂,不过开发思路应该都一样,你可以设个断点调试一下,看看k,v,得到了没,还有.net的for循环跟if语句如果没有{}的话,只读紧挨着他的吓一条语句,而不是多条,如果想多条就用{}扩住,不知道python是什么样的,如果一样,if(username!="" and userpsw!=""):
        for k, v in correctaccount.items():
            if ((username != k) or (userpsw != v)):
                print("text=",text)
                assertreminder(desc, text, "用户名或密码错误!")这就应该有问题,互相学习的小白留言!

但乱红尘熊 | 园豆:771 (小虾三级) | 2017-11-16 16:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册