您正在考虑使用什么测试框架?这将完全改变您在测试(或整个测试套件)之前/之后运行此逻辑的语法。
其他注意事项:
您要进行哪种类型的测试?
“单元测试”?(quota b / c,您不能*在某个网页的python中进行单元测试) 整合测试 压力/性能测试? 如果您认为Selenium是对Web应用程序的UI进行单元测试的一种方式,则可能需要检查一些JavaScript测试框架。如果您在UI中使用任何 JavaScript,请一定签出一个JavaScript框架。使用JavaScript操纵DOM,并尝试使用Selenium操纵DOM是DOM的巨大竞争条件。
您打算使用Selenium测试什么?
是否理智地检查了UI的按钮是否正确连接? 您的Web应用的业务规则? 我强烈建议您使用Selenium来验证您的Web应用程序中的快乐路径(即,我可以单击此按钮),并且不要测试您的业务规则;锤击API来执行那些业务规则。与UI相比,API更改的可能性较小,并且对UI的更改经常会在Selenium测试(测试中断会导致失败,而不是应用程序中的真正失败)中导致误报。
请不要为此感到气!!您正在编写测试,太棒了!
Selenium是正确使用的好工具,很容易使它过载并最终导致测试不一致(取决于JS的数量和JS框架)。
关于您的代码的指针特别是:
使类可以根据需要进行实例化和绑定-使跨框架的代码更容易使用,调试b / c更容易,您只需打开python解释器并使用它即可。
# file named my_webdriver.py
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..')))
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
class MyDriver():
def __init__(self):
self.driver = webdriver.Firefox()
self.base_url = "www.google.com"
self.driver.implicitly_wait(30)
#self.verificationErrors = [] # delete this line, and deal with errors in the framework
self.accept_next_alert = True
self.driver.maximize_window()
self.reset()
def reset(self):
"""So I can be lazy and reset to a know starting point before each test case"""
self.driver.get(self.base_url)
self.driver.delete_all_cookies()
def teardown(self):
self.driver.quit()