Python Selenium自动化(二)自动化注册流程

发表于:2014-6-18 11:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:harolei    来源:51Testing软件测试网采编

  需求:使用python selenium来自动测试一个网站注册的流程。
  假设这个网站的注册流程分为三步,需要提供比较多的信息:
  在这个流程里面,需要用户填入信息、在下拉菜单中选择、选择单选的radio button、多选框等等比较复杂的页面元素操作。
  在开始做的时候,我会按照一个用户真正的填写习惯,参照页面,一步步的定义每个步骤应该进行怎样的操作,我需要查看每一个页面元素的属性,决定选择一个合理的选项,然后再用代码自动化这样的操作。但是反思一下,其实这样的实现方法并不符合一个计算机自动测试的习惯,也浪费了许多时间在手动的寻找页面元素的相关属性和合理操作值上。
  所谓的自动化,就是要机器在最大程度上的去代替人进行某些操作。而只有在程序自己没有办法判断如何操作的时候,我们才为这类操作定义更详细的规定。例如:从计算机的角度,并不需要关心radio button要选择的是male或是female,也不关心下拉菜单中我们要选择的具体的值是什么;它只需要确保radio button和下拉菜单中可以顺利的选择到一个元素。因此,在这个注册流程中,我可以简单的定义找到页面上所有的radio button,然后挨个把它们都点击一遍,这样既能保证每个radio button都被点击事件测试过,也能保证在注册流程中必定有一个选项被选中了。同样的,我可以定义对每个下拉菜单都选择第一个字值。这样的general的方法,可以把我从对每个元素都要找到它的属性然后对其指定详细的操作的辛苦中一次性的解放出来:
def click_radio_btn(driver):
radioBtns = driver.find_elements_by_xpath("//input[@type='radio']")
for radioBtn in radioBtns:
if radioBtn.is_displayed():
radioBtn.click()
  这里我多进行了一次radioBtn.is_displayed()的判断,原因是在我的流程中有的radio button是在选择了某些特定选项之后才会显示在页面上的,因此对于没有显示的元素就不必进行点击操作,否则会抛出异常:
  selenium.common.exceptions.ElementNotVisibleException: Message: u'element not visible
  而对于需要填入具体信息的input field来说,我们就必须要给出具体每个输入框的输入值来告诉程序如何处理这些元素了。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号