几个月来一直在寻找这个问题的答案,但仍然不知道如何实际去做——如何自动化在浏览器中运行的测试?Selenium 测试在后端运行,当然可以自动化,我们现在正在这样做。最近我的任务是自动化基于浏览器的单元测试,但我的知识差距很大——
我不知道该怎么做-
例如 - 自动化测试运行程序如何收集在浏览器中运行的(单元)测试的测试结果和退出代码?谁能解释这实际上是如何完成的以及完成此操作的步骤?
Karma 是实现这一目标的最佳工具吗?
几个月来一直在寻找这个问题的答案,但仍然不知道如何实际去做——如何自动化在浏览器中运行的测试?Selenium 测试在后端运行,当然可以自动化,我们现在正在这样做。最近我的任务是自动化基于浏览器的单元测试,但我的知识差距很大——
我不知道该怎么做-
例如 - 自动化测试运行程序如何收集在浏览器中运行的(单元)测试的测试结果和退出代码?谁能解释这实际上是如何完成的以及完成此操作的步骤?
Karma 是实现这一目标的最佳工具吗?
您可以使用http://phantomjs.org/。phantomjs 是一个无头网络浏览器,您可以将其视为没有 gui 的全栈网络浏览器,可用作库。与 karma 一起,您可以在不依赖任何 GUI 实现的情况下执行单元测试。
这里有一篇博文,它解释了这样一个场景中的不同组件http://orizens.com/wp/topics/my-setup-for-testing-js-with-jasmine-karma-phantomjs-angularjs/
意味着您可以在无头 linux 服务器上执行业力单元测试。
澄清:
你可以用黄瓜。如果您有 20 个测试用例,则可能需要执行。
您可以创建一个包含所有场景的功能文件。需要做什么的 Runner 类和方法可以在不同的包中定义。假设您有一个场景 1. 打开浏览器。2.输入谷歌链接。3. 使用凭据登录。
使用上述信息创建一个功能文件。
使用 Cucumber runner 类。并创建封装方法如
@When("^Open Browser$")
public void open_Browser() throws Throwable {
WebDriver driver = new FirefoxDriver();
driver.get("www.google.com");
}
同样,您可以创建不同的方法来运行。要运行 jar,您可以使用命令行界面技术。
很棒的文章链接 基础知识:这是针对 Python 自动化的,您需要具备一些先前的知识/经验。
pip install selenium
pip install nose
以上应在cmd或shell中执行...
对于此测试,我们将使用 Firefox 打开位于http://www.aweber.com的 AWeber 网站 ,并确保页面标题为“AWeber 小型企业电子邮件营销服务和软件解决方案”。
import unittest
from selenium import webdriver
class AweberTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
def test_title(self):
self.driver.get('https://www.aweber.com')
self.assertEqual(
self.driver.title,
'AWeber Email Marketing Services & Software Solutions for Small Business')
@classmethod
def tearDownClass(cls):
cls.driver.quit()
使用鼻子运行测试:
nose aweber.py
下一个测试,点击元素:
self.driver.get('https://www.aweber.com')
order_tab = self.driver.find_element_by_css_selector('#ordertab>a')
order_tab.click()
有很多选择器,我们可以使用 find_element_by_(css/xpath/name/id) -定位元素
在这种情况下,我们使用方法click但我们也可以.send_keys("asdf")
使用,滚动,执行 java 脚本
browser.execute_script("alert('I canNNNNN not do javascript')")
完整代码示例:LINK-Pastebin