鱼C论坛

 找回密码
 立即注册
查看: 2424|回复: 5

[已解决]关于selenium搭建测试框架的问题!!

[复制链接]
发表于 2023-3-3 12:55:53 | 显示全部楼层 |阅读模式
10鱼币
呜呜呜呜救救我
我跟着视频打的但是不知道为什么不停的报错,但是我转牛角尖的性格就想把他解决掉
报错信息是这样的


  1. 7
  2. 6
  3. 1
  4. 2
  5. 3
  6. None
  7. http://cal.apple886.com/
  8. 4
  9. 5


  10. TypeError: PageCalc() takes no arguments
复制代码

这个是业务层,关于测试计算机加法的练习
  1. import parameterized as parameterized
  2. from test01.po1.base.get_driver import GetDriver
  3. from test01.po1.page.page_calc import PageCalc
  4. import unittest
  5. from selenium import webdriver


  6. class Testcalc(unittest.TestCase):
  7.     print('1')
  8.     driver = None
  9.     # setup
  10.     @classmethod
  11.     def setUpClass(cls):
  12.         print('2')
  13.         # 获取driver
  14.         cls.driver = GetDriver().get_driver()
  15.         print("5")
  16.         # 初始化
  17.         cls.calc = PageCalc(cls.driver)

  18.     # teardown
  19.     @classmethod
  20.     def tearDownClass(cls):
  21.         GetDriver.quit_driver()

  22.     # 测试加法方法
  23.     @parameterized.parameterized.expand([(1, 2, 3)])
  24.     def test_add_cal(self, a, b, expect):
  25.         print('10')
  26.         self.calc.page_add_calc(a, b)
  27.         try:
  28.             # 断言
  29.             self.assertEqual(self.calc.page_result_get(), expect)
  30.         except AssertionError:
  31.             # 截图
  32.             self.calc.page_get_screenshot()

  33.     def assertEqual(self, param, expect):
  34.         pass
复制代码

下面是获取driver的封装
  1. from selenium import webdriver
  2. from test01.po1 import page


  3. class GetDriver:
  4.     # 设置类属性
  5.     driver = None
  6.     # 获取driver
  7.     @classmethod
  8.     def get_driver(cls):
  9.         print('3')
  10.         print(cls.driver)
  11.         if cls.driver is None:
  12.             cls.driver = webdriver.Chrome()
  13.             cls.driver.maximize_window()
  14.             print(page.url)
  15.             cls.driver.get(page.url)
  16.             print("4")

  17.         return cls.driver

  18.     # 退出driver
  19.     @classmethod
  20.     def quit_driver(cls):
  21.         if cls.driver:
  22.             cls.driver.quit()
  23.             cls.driver = None
复制代码

下面是页面层的一些封装

  1. from selenium.webdriver.common.by import By
  2. from test01.po1.base.base import Base
  3. from test01.po1 import page
  4. from test01.po1.page import calc_add, calc_eql, calc_result, calc_clear


  5. class PageCalc(Base):
  6.     print('6')
  7.     # 点击数字
  8.     def page_num_click(self,num):
  9.         print('0')
  10.         for i in num:
  11.             loc = By.name, "simple{}".format(i)
  12.         self.base_click_num(loc)

  13.     # 点击加号
  14.     def page_add_click(self):
  15.         self.base_click_num(calc_add)

  16.     # 点击等号
  17.     def page_eql_click(self):
  18.         self.base_click_num(calc_eql)
  19.     # 获取结果
  20.     def page_result_get(self):
  21.         return self.base_get_value_element(calc_result)
  22.     # 清屏
  23.     def page_clear_click(self):
  24.         self.base_click_num(calc_clear)

  25.     def page_get_screenshot(self):
  26.         self.base_get_screenshot()
  27.     #组装
  28.     def page_add_calc(self,a,b):
  29.         print('9')
  30.         self.page_num_click(a)
  31.         self.page_add_click()
  32.         self.page_num_click(b)
  33.         self.page_eql_click()
  34.         self.page_result_get()
  35.         self.page_clear_click()
复制代码

下面是基础层一些操作的封装
  1. import time

  2. from selenium import webdriver
  3. from selenium.webdriver.support.wait import WebDriverWait


  4. class Base:
  5.     print('7')

  6.     # 查找元素
  7.     def base_find_element(self,loc):
  8.         print('8')
  9.         return WebDriverWait(self.driver,timeout=30,poll_frequency=0.5).until(lambda x:x.find_element(*loc))

  10.     # 点击
  11.     def base_click_num(self,loc):
  12.         self.base_find_element(loc).click()

  13.     # 获取value值封装
  14.     def base_get_value_element(self,loc):
  15.         return self.base_find_element(loc).get_atrribute("value")

  16.     # 截图
  17.     def base_get_screenshot(self):
  18.         self.driver.get_screenshot_as_file("./{}.png".format(time.strftime("%Y_%m_%d_%H_%M_%S")))
复制代码

报错的那些数字是我再找哪步开始出错,似乎是初始化setup里的
  1.         # 初始化
  2.         cls.calc = PageCalc(cls.driver)
复制代码

这一步显示没有参数,但是我已经传参了呀,在get driver里面也返回了
最佳答案
2023-3-3 12:55:54
yukari123 发表于 2023-3-3 13:13
我是在page的包里的__init__.py里面写的这些配置信息

bbq了我不会重写__init__方法,目前还在跟着视频 ...

所以你为什么要给 PageCalc 传参数?

最佳答案

查看完整内容

所以你为什么要给 PageCalc 传参数?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-3 12:55:54 | 显示全部楼层    本楼为最佳答案   
yukari123 发表于 2023-3-3 13:13
我是在page的包里的__init__.py里面写的这些配置信息

bbq了我不会重写__init__方法,目前还在跟着视频 ...

所以你为什么要给 PageCalc 传参数?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-3 13:05:30 | 显示全部楼层
它这个不是说你没有传参,而是不接受参数呀

我看了一下你的 PageCalc 没有重写 __init__ 方法,

默认的 __init__ 方法是不接受任何初始化参数的,你得重写 __init__
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-3 13:13:55 | 显示全部楼层
isdkz 发表于 2023-3-3 13:05
它这个不是说你没有传参,而是不接受参数呀

我看了一下你的 PageCalc 没有重写 __init__ 方法,

我是在page的包里的__init__.py里面写的这些配置信息

  1. '''以下为计算机配置数据'''
  2. from selenium.webdriver.common.by import By
  3. def __init__(self):
  4.     calc_num = By.ID, "simple9"
  5.     calc_add = By.ID, "simpleAdd"
  6.     calc_eql = By.ID, "simpleEqual"
  7.     calc_result = By.ID, "resultIpt"
  8.     calc_clear = By.CSS_SELECTOR, "#simpleClearAllBtn"

  9.     '''以下为服务器配置数据'''
  10.     url = "http://cal.apple886.com/"
复制代码

bbq了我不会重写__init__方法,目前还在跟着视频老师一步一步打的程度。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-3-3 13:23:57 | 显示全部楼层
isdkz 发表于 2023-3-3 13:16
所以你为什么要给 PageCalc 传参数?

我靠!!!大佬你好神,真的句句解决问题!太牛逼了我也想成为和你一样的大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-3 13:27:56 | 显示全部楼层
yukari123 发表于 2023-3-3 13:23
我靠!!!大佬你好神,真的句句解决问题!太牛逼了我也想成为和你一样的大佬

坚持学下去,不用多久你也会成为大佬的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表