weixin_45681959 2022-07-22 15:46 采纳率: 0%
浏览 320

'NoneType' object has no attribute 'click' 网址可以正常跳转,到了点击数字按钮的地方浏览器就关了,然后报错.

问题遇到的现象和发生背景

计算器网页网址可以正常跳转,到了点击数字按钮的地方浏览器就关了,然后报错.

自己练手的一个PO结构的计算器网址自动化练习,网址是:url = "http://cal.apple886.com/".然后报错说 AttributeError: 'NoneType' object has no attribute 'click'

问题相关代码,请勿粘贴截图

**这个是base.py **


from datetime import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

class Base:
    #初始化方法
    def __init__(self, driver):
        self.driver = driver

    def base_find_element(self, loc, timeout=30, poll=0.5):
        WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll).until(lambda x:x.find_element(*loc))

    # 点击方法
    def base_click(self, loc):
        self.base_find_element(loc).click()


    #元素输入方法
    def base_input(self,loc,value):
        #获取元素
        el = self.base_find_element(loc)
        #清空
        el.clear()
        el.send_keys(value)

    #获取value值封装
    def base_get_value(self,loc):
        self.base_find_element(loc).get_attribute("value")
运行结果及报错内容
test_calc.py:31 (TestClac.test_add_clac_0)
a = (<test_calc.TestClac testMethod=test_add_clac_0>,)

    @wraps(func)
    def standalone_func(*a):
>       return func(*(a + p.args), **p.kwargs)

..\..\venv\lib\site-packages\parameterized\parameterized.py:533: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_calc.py:35: in test_add_clac
    self.clac.page_add_calc(a, b)
..\page\page_calc.py:37: in page_add_calc
    self.page_click_num(a)
..\page\page_calc.py:11: in page_click_num
    self.base_click(loc)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <computer.page.page_calc.PageCalc object at 0x000002C6FFEB0A90>
loc = ('css selector', '#simple1')

    def base_click(self, loc):
>       self.base_find_element(loc).click()
E       AttributeError: 'NoneType' object has no attribute 'click'

page层

from selenium.webdriver.common.by import By
from computer import page
from computer.base.base import Base


class PageCalc(Base):
    #点击数字方法
    def page_click_num(self, num):
        for n in str(num):
            loc = By.CSS_SELECTOR, "#simple{}".format(n)
            self.base_click(loc)

    #点击加号
    def page_click_add(self):
        self.base_click(page.clac_add)


    #点击等号
    def page_click_eql(self):
        self.base_click(page.clac_eql)

    #获取结果方法
    def page_get_value(self):
        return self.base_get_value(page.clac_result)

    #点击清屏
    def page_click_clear(self):
        self.base_click(page.clac_clear)
     #截图
    def page_get_image(self):
       self.base_get_img()



    #组装业务方法
    def page_add_calc(self,a,b):
        self.page_click_num(a)
        self.page_click_add()
        self.page_click_num(b)
        self.page_click_eql()

test方法执行层

import unittest
from parameterized import parameterized
from computer.page.page_calc import PageCalc
from computer.base.get_driver import GetDriver
from computer.tool import read_json


def get_data():
    data = read_json("clac.json")
    print(data)
    arrs = []
    for data in data.values():
        arrs.append((data['a'], data['b'], data['expect']))
    return arrs

class TestClac(unittest.TestCase):
    driver = None
    # setupclass
    @classmethod
    def setUpClass(cls):
        # 获取driver
        cls.driver = GetDriver().get_driver()
        # 初始化页面对象
        cls.clac = PageCalc(cls.driver)

    #teardownclass
    @classmethod
    def tearDownClass(cls):
        GetDriver.quit_driver()

    #测试加法方法
    @parameterized.expand([(1,2,3)])
    #调用page页面下的总方法
    def test_add_clac(self, a, b, expect):
        self.clac.page_add_calc(a, b)
        print("预期结果为", expect, "实际结果为", self.clac.page_get_value())
        try:
            #断言
            self.assertEqual(self.clac.page_get_value(),str(expect))
        except:
            #截图
            self.clac.page_get_image()
            raise

我的解答思路和尝试过的方法

报错:'NoneType' object has no attribute 'click'

对应的base层 page层,执行test层我检查好多遍,还是不知道哪里出问题了.计算器网页网址可以正常跳转,到了点击数字按钮的地方浏览器就关了,然后报错.

我想要达到的结果
  • 写回答

3条回答 默认 最新

  • 梦回元悟 2022-07-22 16:01
    关注

    一般来说attribute的问题大都是拼写类错误,或类的实例属性调用的错误,建议自己先检查一下

    评论

报告相同问题?

问题事件

  • 创建了问题 7月22日

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题