川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

API:操作API(三)

作者:川石学院 日期:2022-04-26 11:34:45 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“API:操作API(三)”。

UiAutomator API详解:UiSelector类介绍(一)(图1)

  (11)复选框(CheckBox) 操作。

  仍旧通过elenium.is_selected()来判断复选按钮是否被选择。

  案例4-64:选择复选框中的一个选项。

  对于下面的HTML。

<h4>选择课程</h4>  

    <form>

    <input id="c1" type="checkbox">selenium<br> 

    <input id="c2" type="checkbox">python<br> 

    <input id="c3" type="checkbox">appium<br>

如下Selenium测试代码。

def test_CheckChecxBoxByOne(self):

       element = self.driver.find_element_by_id("c1")#定位第一个选项

       if not element.is_selected():#由于多选框,如果是选择状态,点击变为未选择状态。反之,如果是未选择状态,点击变为选择状态,所有这里用if语句进行判断

              element.click()#如果复选框未选,则点击它

       self.assertTrue(element.is_selected(),"复选框未被选中!")# 断言“selenium”复选框被选中

  案例4-65:选择复选框中的所有选项。

  对于案例4-62同一个的HTML,有如下Selenium测试代码。

  def test_CheckChecxBoxByAll(self):

  checkbox= self.driver.find_elements_by_xpath("//input[@type='checkbox']")#这里用find_elements…

  for i in checkbox:#遍历所有复选框

  if not i.is_selected():#如果这项没有被选择

  i.click()#点击它

  self.assertTrue(i.is_selected(),"selenium未被选中!")# 断言最后一项是否被选择

  (12)警告框、弹出个确认框、弹出个输入框(Alert、Confirm、Prompt) 操作。

  这三个元素共有以下五个操作语法。

  driver.switchTo().alert()#获取alert

  alert.accept()#点确定

  alert.dismiss()#点取消

  alert.text()#获取alert的内容

  alert.send_key(keysToSend) #向Prompt发送文字

  案例4-66:警告框操作。

  def test_CheckAlert(self):

  alertInformation="这是一个alert弹框"

  self.driver.execute_script("alert('"+alertInformation+"')")

  time.sleep(2)

  #self.driver.switch_to_alert().accept() #相当于点击"确定"

  #self.driver.switch_to_alert().dismiss() #相当于点击"取消"

  text=self.driver.switch_to_alert().text #获取弹窗框里面的文字

  self.assertEqual(text,alertInformation)

  (13)Cookie操作。

  Cookie共有以下五个操作语法。

  get_cookies()#获得所有cookie

  get_cookie(name)#返回字典key为name的cookie

  add_cookie(cookie_dict)#添加cookie,cookie_dict为字典信息

  delete_cookie(name,optionsString)#根据key为name删除cookies,optionsString支持路径、域

  delete_all_cookies()#删除所有cookies

  案例4-67:对csrftoken的操作。

  附录A登录模块HTML代码如下。

<form class="form-signin" method="post" action="/login_action/" enctype="multipart/form-data">

<input type="hidden" name="csrfmiddlewaretoken" value="gNSK53BZIlPXK1wkRh6ZPeMIsCJOqTUtklfNsqxqnSEKrMoBUYoT2SWuo2Z4ouo3">

<h2 class="form-signin-heading">电子商务系统-登录</h2>

<p><label for="id_username">用户名:</label> <input type="text" name="username" maxlength="100" required id="id_username"></p>

<p><label for="id_password">密码  :</label> <input type="password" name="password" required id="id_password"></p>

<button class="btn btn-lg btn-primary btn-block" type="submit">登录</button><br>

<a href="\register\">注册</a>

</form>

  为了破解csrftoken,需要获取name="csrfmiddlewaretoken" 隐藏文本框的内容,将其放入一个名为csrftoken的Cookies中。其Selenium测试代码如下。

  def test_CheckLogin(self):

  username='cindy'#定义用户名

  password='123456'#定义密码

  self.driver.find_element_by_id("id_username").clear()#清空并写入用户名

  self.driver.find_element_by_id("id_username").send_keys(username)

  self.driver.find_element_by_id("id_password").clear()#清空并写入密码

  self.driver.find_element_by_id("id_password").send_keys(password)

  csrftoken = self.driver.find_element_by_name("csrfmiddlewaretoken").get_attribute("value")#获取name="csrfmiddlewaretoken" 隐藏文本框的内容

  self.driver.add_cookie({"name":"csrftoken","value":csrftoken})#将其放入一个名为csrftoken的Cookies中

  self.driver.find_element_by_class_name("form-signin").submit()#进行登录操作

  self.assertEqual(self.driver.title,"电子商务系统",msg="标题不正确")#验证登录知否成功

  (14)文件上传。

  这里仅对HTML为<input type="file">的文件介绍。

  案例4-68:文件上传。

  def test_CheckUpload (self):

  file ="c:\\python\\song.txt"#上传文件路径

  self.driver.find_element_by_name("upfile").send_keys(file)

  time.sleep(4)

  self.driver.find_element_by_id("submit").click()#提交表单

  time.sleep(4)

  self.assertIsNotNone("文件成功上载",self.driver.page_source)

  (15)文件下载。

  案例4-69:文件下载。

  def setUp(self):

  f = open("info.txt", "r")

  brower = f.readline()

  f.close()

  if brower.lower() == "firefox":

  profile = webdriver.FirefoxProfile()

  profile.set_preference('browser.download.dir', 'c:\\')

  profile.set_preference('browser.download.folderList', 2)

  profile.set_preference('browser.download.manager.showWhenStarting', False)

  profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/rar’)

  elif brower.lower() == "chrome":

  options = webdriver.ChromeOptions()

  prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'c:\\'}

  options.add_experimental_option('prefs', prefs)

  else:

  print("该浏览器不支持下载")

  self.assertEqual(1,2)

  d = drivers()

  self.driver=d.driver

  self.driver.implicitly_wait(5)

  self.driver.get("http://127.0.0.1:8080/sec/37/index.html")

  def test_Download(self):

  self.driver.find_element_by_link_text('下载').click()

  time.sleep(3)

  这里Chrome与Firefox支持方式是不一样的,另外IE Selenium Webdriver是不支持下载的。

  •   l 对于Chrome。

  Ø browser.download.dir:指定下载路径。

  Ø browser.download.folderList:设置成 2 表示使用自定义下载路径;设置成 0 表示下载到桌面;#设置成 1 表下载到默认路径。

  Ø browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器(没作用)。

  Ø browser.helperApps.neverAsk.saveToDisk:对所给出文件类型不再弹出框进行询问。

  •   l 对于Firefox。

  Ø download.default_directory:设置下载路径。

  Ø profile.default_content_settings.popups:设置为 0 禁止弹出窗口。

  (17)对HTML5 Vedio的操作

  对HTML5 Vedio的操作共有以下四个操作语法。

  url = driver.execute_script("return argument[0].currentSrc",video) #获取视频的路径

  driver.execute_script("return argument[0].load() ",video) #调用视频

  driver.execute_script("return argument[0].play() ",video) #播放视频

  driver.execute_script("return argument[0].pause() ",video) #暂停视频

  案例4-70:HTML5 Vedio的操作。

  以下测试程序将调用一段视频播放3秒钟后暂停5秒钟,然后继续播放。

  class CheckVideo(unittest.TestCase):

  def setUp(self):

  d = drivers()

  self.driver=d.driver

  self.driver.implicitly_wait(5)

  self.driver.get("http://127.0.0.1:8080/sec/16/index.htm")

  def test_CheckVideo(self):

  video= self.driver.find_element_by_id("video")#获取视频元素

  print("start")

  self.driver.execute_script("return arguments[0].play()",video)#播放视频

  time.sleep(3)

  print("pause")

  self.driver.execute_script("return arguments[0].pause()",video)#暂停视频

  time.sleep(5)

  print("restart")

  self.driver.execute_script("return arguments[0].play()",video)#继续播放视频


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-04-26 11:34:45
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-04-26 11:34:45
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-04-26 11:34:45
  • 建筑工程专业朱同学成功转行为软件测试人!2022-04-26 11:34:45
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-04-26 11:34:45
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-04-26 11:34:45
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-04-26 11:34:45
  • 文科生转行软件测试照样拿下高薪15K!2022-04-26 11:34:45
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-04-26 11:34:45
  • 毕业1年,迷茫的他最终选择转行软件测试2022-04-26 11:34:45