51Testing软件测试论坛

标题: 小白求救,如何判读登录失败的原因【已解决】 [打印本页]

作者: pl02206984    时间: 2016-7-1 15:37
标题: 小白求救,如何判读登录失败的原因【已解决】
本帖最后由 pl02206984 于 2016-7-12 10:49 编辑

看了几天的selenium,然后今天动手写了一个testcase,但是发现问题多多啊,其中有一个问题向大伙求教下,问题如下:我写了个登录的testcase,但是当写到判断登录失败原因的时候卡住了,因为我不知道如何去判断登录失败的原因,要是非空还好判断,但是输入我输入错误的用户名和密码,那如何判断呢?
请大神门给点指点,谢谢了。

作者: 若尘_51    时间: 2016-7-1 15:56
问题描述清楚点,失败原因的时候卡住了? 还是截图和脚本附上来看看吧~~
作者: pl02206984    时间: 2016-7-4 09:51
若尘_51 发表于 2016-7-1 15:56
问题描述清楚点,失败原因的时候卡住了? 还是截图和脚本附上来看看吧~~

谢谢你的回复。
是这样的,在登陆的时候肯定有判断的。
1.判断用户名和密码不能为空。
2.判断用户名和密码的正确性。
第一个我可以写出来,但是我不知道如何写第二个。
作者: 若尘_51    时间: 2016-7-4 13:40
1、正常登陆的情况,获取登陆后的ULR和任意一个页面元素,与你的预期结果对比(使用断言)
2、登陆失败的情况,如:用户名非法,或密码不正确等情况,获取提示信息,与你的预期结果对比(也是使用断言)

例子:
        ulr_value = r'http://www.baidu.com'
        if driver.current_url == ulr_value:
            print "Pass"
            flag1 =1
        else:
            print "当前的ULR错误"
            flag1 =2
            #失败截图
            driver.switch_to_window(driver.window_handles[-1])  
            ErrorPng_name = Commond_ErrorPng("test_01")
            driver.get_screenshot_as_file(ErrorPng_name)         
        self.assertEquals(flag1,1)
            
        #(2) 页面元素显示正常
        text_value = driver.find_element_by_id("columnTitle_h2").text
        time.sleep(1)
        if text_value == u"公告":
            print "Pass"
            flag2 =1
        else:
            print "页面元素显示异常"
            flag2 =2
            #失败截图
            driver.switch_to_window(driver.window_handles[-1])  
            ErrorPng_name = Commond_ErrorPng("test_01")
            driver.get_screenshot_as_file(ErrorPng_name)
        self.assertEquals(flag2,1)
        
作者: pl02206984    时间: 2016-7-4 15:34
若尘_51 发表于 2016-7-4 13:40
1、正常登陆的情况,获取登陆后的ULR和任意一个页面元素,与你的预期结果对比(使用断言)
2、登陆失败的 ...

谢谢,但是还有一个问题,比如我点击下一步按钮。原本的样式是这样的:
  1. <div class="con-ste">
  2.                         <ul>
  3.                                 <li class="step1"></li>
  4.                                 <li class="step2"></li>
  5.                                 <li class="step3"></li>
  6.                         </ul>
  7.                 </div>
复制代码

点击后变成这个样子:

  1. <div class="con-ste">
  2.                         <ul>
  3.                                 <li class="step1" style="background: url("/xxxx/image/1_2.png") no-repeat;"></li>
  4.                                 <li class="step2" style="background: url("/xxxx/image/2_2.png") no-repeat;"></li>
  5.                                 <li class="step3"></li>
  6.                         </ul>
  7.                 </div>
复制代码
那么我应该如何判断我点击那个下一步按钮成功了,因为成功后会变成下面那个样式。

作者: 若尘_51    时间: 2016-7-4 16:02
#去除style的值,进行判断:
style_value1 = driver.ind_element_by_xpath(xxx).get_attribute('style')
style_value   = style_value1[:10]
if style_value == "background":
           print "Pass"
           flag1 =1
............
作者: pl02206984    时间: 2016-7-4 16:11
若尘_51 发表于 2016-7-4 16:02
#去除style的值,进行判断:
style_value1 = driver.ind_element_by_xpath(xxx).get_attribute('style')
...

谢谢,我去试试
作者: pl02206984    时间: 2016-7-5 14:05
本帖最后由 pl02206984 于 2016-7-5 14:26 编辑
若尘_51 发表于 2016-7-4 16:02
#去除style的值,进行判断:
style_value1 = driver.ind_element_by_xpath(xxx).get_attribute('style')
...

今儿我遇到了一个新的问题,在注册成功后会弹出一个对话框,代码如下
  1. <div class="modal" id="popup-modal" style="margin-left: -15%; display: block;">
  2.                                 <div class="success">注册成功!</div>
  3.                                 <div class="su_title">
  4.                                         <img src="/xyqb/image/redbag.png">
  5.                                 </div>
  6.                                 <div class="su_content">
  7.                                         前往 <a target="_blank" href="xxxxxxxxx" style="font-size:18px; color:#2da4da;">点击领奖</a> 参与游戏<br> 领取红包
  8.                                 </div>
  9.                                 <input class="gonow" type="button" value="GOGOGO" onclick="location.href='xxxxxxxx'">
  10.                                 <div class="gogg">
  11.                                         <a href="xxxxxxxxx">去瞅瞅</a>
  12.                                 </div>
  13.                         </div>
复制代码

其中s当注册成功后,id是popup-modal的这个div中,style会增加一个显示的命令:display: block;。
本来我想的是获取popup-modal这个div的style,然后用indexof判读有没有display: block这句话的,但是最后发现,我获取的style只能获取到第一个;号为止,也就是说我获取不到第一个;号后面的display: block;,想问下这个应该怎么解决?
作者: 若尘_51    时间: 2016-7-5 15:45
pl02206984 发表于 2016-7-5 14:05
今儿我遇到了一个新的问题,在注册成功后会弹出一个对话框,代码如下

其中s当注册成功后,id是popup-m ...

首先确认下获取的内容看看:
style_value = driver.ind_element_by_xpath(xxx).get_attribute('style')
print style_value
如果真如你所说的,你可以尝试获取对话框其他内容,也可以判断“注册成功,弹出了对话框“”。
作者: pl02206984    时间: 2016-7-6 10:01
若尘_51 发表于 2016-7-5 15:45
首先确认下获取的内容看看:
style_value = driver.ind_element_by_xpath(xxx).get_attribute('style')
...

好诡异,我今天重新运行了我写的代码,就可以了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2