BasePage 类代码如下:
from selenium.webdriver.support.wait import WebDriverWait as WD
from selenium.webdriver.support import expected_conditions as EC

class BasePage(object):

def init(self, driver):
self.driver = driver

def find_element(self, *loc):
try:
WD(self.driver, 60).until(EC.visibility_of_element_located(*loc))
return self.find_element(*loc)
except:
print("元素没找到")

def send_keys(self, value, *loc):
self.find_element(*loc).send_keys(value)

第一个问题:上面的 BasePage 类中的 driver 是从 TestCase 类中传过来的,但是我在写 def send_keys(self, value, *loc) 这个方法的时候,写 self.find_element(*loc).send_keys(value) 的时候,send_keys(value) 这个方法是调用不出来的,是不是说明我的 driver 没有传递过来?如下图:

HomePage 类继承了 BasePage 类,代码如下:

from basepage import BasePage
from selenium.webdriver.common.by import By

class HomePage(BasePage):

search_input = (By.XPATH, "//div[@id='home-search']//input[@class='typeahead form-control']")
search_button = (By.XPATH, "//div[@id='home-search']//span[@class='icon-search']")

def input_search(self, value):
self.send_keys(value, self.search_input)

def click_search_button(self):
self.find_element(self.search_button).click()

TestCase 类的代码如下:

import unittest
from selenium import webdriver
from homepage import HomePage

class TestSearch(unittest.TestCase):

@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.homepage = HomePage(cls.driver)
cls.driver.get("https://support.lenovo.com/us/en")

def test_search(self):
self.homepage.input_search("lenovo")
self.homepage.click_search_button()

@classmethod
def tearDownClass(cls):
cls.driver.quit()

if name == 'main':
unittest.main()

上面的 TestCase 类中 driver 通过 cls.homepage = HomePage(cls.driver) 传递给 homepage 类,然后传递给 BasePage 类中的 driver,但是 BasePage 类中的 driver 却调用不到 selenium webdriver 的一些常用方法,比如 send_keys(), page_souce() 等,是 driver 没有传递到 BasePage 类中吗?

然后我运行我的 TestCase, 果然在这里 self.find_element(*loc).send_keys(value),报错了,错误如下:

File "D:\automationTestProject\johnunittest\basepage.py", line 20, in send_keys
return self.find_element(*loc).send_keys(value)
AttributeError: 'NoneType' object has no attribute 'send_keys'

小弟以前是学 JAVA 的,刚刚学习 python 自动化,请各位大神,指点一下,非常感谢!


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