================================================================================================================================================ test session starts ==================================================================================================================================================
platform win32 -- Python 3.7.1, pytest-4.2.0, py-1.7.0, pluggy-0.8.0
rootdir: E:\tongzhuopy\hello\web_tongzh_tv, inifile: pytest.ini
plugins: remotedata-0.3.1, openfiles-0.3.1, doctestplus-0.2.0, arraydiff-0.3, allure-pytest-2.5.5
collected 8 items

Scripts\test_login.py EEEEEEEE

======================================================================================================================================================== ERRORS ========================================================================================================================================================
______________________________________________________________________________________________ ERROR at setup of Test_Login.test_login_page[test_login_001-18735704321-12345678p-\u6210\u529f-\u767b\u5f55\u6210\u529f-1] ______________________________________________________________________________________________

self =

def setup_class(self):
# 实例化登陆对象
self.LP_obj = Login_Page(get_driver())
# 点击个人中心
sleep(5)

self.LP_obj.click_sy_login_btn()

Scripts\test_login.py:24:


Page\login_page.py:10: in click_sy_login_btn
self.click_element(Page.sy_login_btn_id)
Base\Base.py:38: in click_element
self.search_element(loc).click()
Base\Base.py:21: in search_element
return WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))
C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\support\wait.py:71: in until
value = method(self._driver)


x = None

return WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))
E AttributeError: 'NoneType' object has no attribute 'find_element'

Base\Base.py:21: AttributeError
_____________________________________________________________________________________________ ERROR at setup of Test_Login.test_login_page[test_login_002- 15652292326-a123456789-\u6210\u529f-\u767b\u5f55\u6210\u529f-1] _____________________________________________________________________________________________

项目目录结构:
E:.
│ pytest.ini
init.py

├─Base
│ │ Base.py
│ │ init_driver.py
│ │ read_data.py
│ │ init.py
│ └─

├─Data
│ data.yml
init.py

├─Page
│ │ login_page.py
│ │ logout_page.py
│ │ init.py
│ └─

├─report
└─Scripts
│ │ test_login.py
│ │ init.py
│ └─
报错信息指向\selenium\webdriver
Base\Base.py:21: in search_element
return WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))
C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\selenium\webdriver\support\wait.py:71: in until
value = method(self._driver)
详细代码如下:

def until(self, method, message=''):
    """Calls the method provided with the driver as an argument until the \
    return value is not False."""
    screen = None
    stacktrace = None

    end_time = time.time() + self._timeout
    while True:
        try:
            value = method(self._driver)
            if value:
                return value
        except self._ignored_exceptions as exc:
            screen = getattr(exc, 'screen', None)
            stacktrace = getattr(exc, 'stacktrace', None)
        time.sleep(self._poll)
        if time.time() > end_time:
            break
    raise TimeoutException(message, screen, stacktrace)

根据报信息 “return WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))
E AttributeError: 'NoneType' object has no attribute 'find_element'” 尝试写 demo 发现没问题。

WebDriverWait(driver,20,1.0).until(lambda x: x.find_element(By.ID,"com.deskmate.tv:id/btn_hint_yes")).click()

依赖包


↙↙↙阅读原文可查看相关链接,并与作者交流