我有两个功能要测试;一个仅在“现代浏览器”中运行,另一个仅在“旧版”浏览器中运行。我使用Jasmine作为我的测试框架,使用Karma来运行我的测试。Karma将启动许多运行所有测试的浏览器。我的问题是在所有浏览器中测试我的所有功能会导致一些测试失败。例如,测试一个只应在现代浏览器中运行的函数在IE8中测试时会失败。要测试的代码:functiongetStuffFromSmartBrowser(){return'foo';}functiongetStuffFromNotSoSmartBrowser(){return'bar';}if('intelligence'inbrowser){g
在Jasmine中,有toBeGreaterThan和toBeLessThan匹配器。如果我想检查特定范围内的整数值怎么办?是否有类似toBeInBetween匹配器的东西?目前,我可以在两个单独的expect调用中解决它:varx=3;expect(x).toBeGreaterThan(1);expect(x).toBeLessThan(10); 最佳答案 您可以运行bool比较并断言结果为true:expect(x>1&&x另外,jasmine-matchers引入了toBeWithinRange()自定义匹配器:expect(
根据HowdoIassertanelementisfocused?线程,您可以通过切换到activeElement()来检查元素是否获得焦点,并断言这是您期望获得焦点的同一元素:expect(page.element.getAttribute('id')).toEqual(browser.driver.switchTo().activeElement().getAttribute('id'));在我的例子中,当前获得焦点的元素没有id属性。我应该怎么做而不是检查id?奖励问题:此外,正如您从我尝试解决它的过程中看到的那样,我似乎无法期望/断言一个元素(或Web元素)作为一个完整的对象。
最近,我注意到Protractor文档中添加了一个新的定位器-by.js():LocatesanelementsbyevaluatingaJavaScriptexpression,whichmaybeeitherafunctionorastring.我了解此定位器提供的功能,但我错过了此定位器有用的真实世界用例。我什么时候应该更喜欢使用by.js而不是by.css等其他内置定位器? 最佳答案 我觉得用例是使用核心javascript函数获取元素,每当css和其他元素定位器无济于事或没有我们可以使用的属性时。场景-如果您使用核心jav
我收到一个错误消息,说我尝试点击的元素无法点击,我认为这不是真的。我的错误看起来是:1)OpenVehiclePageandpopulatedataPopulatevehicledataMessage:UnknownError:unknownerror:Elementisnotclickableatpoint(1315,371).Otherelementwouldreceivetheclick:...(Sessioninfo:chrome=39.0.2171.71)(Driverinfo:chromedriver=2.13.307647(5a7d0541ebc58e69994a6fb2
我想在我的Angular应用程序的两个单独页面上运行Protractor测试:/dashboard和/articles。复杂的是我必须手动登录应用程序。目前我有这个设置:varLoginPage=function(){ptor=protractor.getInstance();this.login=function(url){ptor.get(url);ptor.findElement(protractor.By.model('email')).sendKeys(config.LOGIN_EMAIL);ptor.findElement(protractor.By.model('pass
我们在几个JS文件中为我们的AngularJS应用程序进行了几个Protractor端到端测试,它们运行良好。但是,在整个测试过程中有很多重复的代码,我们想把它擦干。比如我们每次登录,都要点击文本元素,输入用户名和密码,然后点击回车。现在每个JS文件都有自己的登录函数副本,该函数在每次测试之前调用。最好将它们重构为我们可以导入的模块。我已经搜索了几个小时,但没有找到好的解决方案。我们应该怎么做? 最佳答案 您可以创建nodejs模块并将它们包含在Protractor配置中login-helpers.jsexports.loginTo
使用端到端测试确保找到值(例如不是空字符串)的最佳方法是什么,我的示例只是匹配文本本身,我想计算字符串长度并确保它不为0。describe'DeviceDetails',->device=ionic.Platform.device()details='deviceManufacturer':$('#deviceManufacturer'),'deviceModel':$('#deviceModel')it'DeviceManufacturermustnotbeempty',->expect(details.deviceModel.getText()).toEqual'10'
我有以下服务:import{Injectable}from'@angular/core';import{MenuItem}from'./../classes/menu-item';import{ITEMS}from'./../static-data/items-list';@Injectable()exportclassItemsListService{getItems():Promise{returnPromise.resolve(ITEMS);}}这个服务的测试在这里:import{TestBed,async,inject}from'@angular/core/testing';i
每当任何jest测试失败时,我都想运行一个function/task。不是用try/catch包装我的所有测试或添加if检查,有没有一种方法可以利用afterEach?如果测试失败,那么我希望它失败,只需运行一个单独的函数。例如:test('navloadscorrectly',async()=>{constlistItems=awaitpage.$$('[data-testid="navBarLi"]')expect(listItems.length).toBe(4)if(listItems.length!==4)awaitpage.screenshot({path:'screens