selenium框架学习之获取文本框内容和Xpath元素不唯一

本周一直写创建简历的测试用例,由于元素和内容过多,只能把各个方法单独封装,然后在测试用例里面使用,以此优化用例。

在封装的时候遇到的一些问题,和大家说下怎么解决~

1.  获取文本框输入---新增了一个【输入微信号】的功能模块,需要同时测试点击【同手机】和输入文本的功能。于是我在这里封装了两个方法。

2.第一个方法是点击【同手机】的方法,由于点击后还要断言是否和手机号一致,所以需要获取点击后的文本。

在点击之后,直接定位文本框的xpath元素(会比较稳定),然后使用 get_attribute('value')方法就可以直接获取该文本啦。

get_attribute('value')---十分适合获取文本框的内容,这个方法真的很好用,大家需要断言文本框的内容都可以直接用这个方法

最后使用判断语句来确定是否输入成功以及输入是否和手机号一致

因为手机号中间的4位数被隐藏了,所以直接判断前3位和后4位的数字就可以啦

    def wechat_same_as_phone(self):
        """填写微信,点击同手机"""
        # 点击【同手机】
        driver.find_element(By.XPATH,
                            '//*[@id="__layout"]/div/div/div[2]/div/div[2]/form/div[4]/div[2]/div/div/div/span').click()
        sleep(2)
        # 确认是否已填入微信号
        wechat = driver.find_element(By.XPATH, '//*[@id="__layout"]/div/div/div[2]/div/div[2]/form/div[4]/div[2]/div/div/div/div/input').get_attribute('value')
        phone_number = driver.find_element(By.XPATH,
                                           '//*[@id="__layout"]/div/div/div[2]/div/div[2]/form/div[4]/div[1]/div/div/span/span/div/input').get_attribute(
            'value')
        if phone_number[0:3] == wechat[0:3] and phone_number[-4:] == wechat[-4:]:
            print('测试通过')
        else:
            print('测试失败')

3. 输入微信号的封装方法就相对简单很多,只需断言即可。这里也是使用了get_attribute('value')方法获取输入后的文本内容

    def input_wechat(self, number):
        """输入微信号"""
        wechat = driver.find_element(By.XPATH, '//*[@id="__layout"]/div/div/div[2]/div/div[2]/form/div[4]/div[2]/div/div/div/div/input')
        wechat.send_keys(number)  # 输入微信号
        wechat_text = driver.find_element(By.XPATH, '//*[@id="__layout"]/div/div/div[2]/div/div[2]/form/div[4]/div[2]/div/div/div/div/input').get_attribute('value')  # 获取已输入的内容
        except_text = number
        self.assertEqual(except_text, wechat_text)

4.在定位同一个元素时发现了一个问题,在用例1是测试通过的,但是在用例2测试失败,这个问题让我困扰了很久,于是我在用例2运行时,直接copy了该元素的xpath路径。

对比一看,发现是div数字有变化。因为用例2比用例1多了1个元素,所以div数字也变了,相当于同一个元素有两个xpath。经过不断的调试,发现直接使用last()函数就可以解决了。

后续的一些元素我都更换为last()函数了,这样用例运行起来也会更流畅,以及维护成本也比较低

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值