2016-01-21 26 views
1

我想在一个套件,它是这样运行不同的规格:执行一套房时,脚本之间超时 - 量角器无角

suites:{ 
 
     homepage: '../Phonebook/specs/Navigate_URL.js', 
 
     Login:['../Phonebook/specs/Login_Valid.js', 
 
       '../Phonebook/specs/Validate_Home.js'], 
 
     search: '../Phonebook/specs/SearchText.js', 
 
     logout: '../Phonebook/specs/Logout.js', 
 
    },

当我分开运行使用规范,他们都运行得很好,没有时间问题。我试图一次运行整个套件,它运行得非常好,现在,它表明再次出现时序问题。我已经在每个脚本中包含了browser.sleep(),以确保所有脚本都将等待下一个脚本的执行。 getPageTimeout:,allScriptsTimeout:也被使用。有什么方法或任何一般方法来避免这个问题?

回答

1

由于这是一个非角度应用程序,Protractor不会像Angular那样同步它。测试不会那么简单,流程也不会像测试中的Angular应用那样清晰自然。

为了避免任何计时问题,您需要始终“先看看您的飞跃”:使用browser.wait()和一组内置的Expected Conditions。例如,在进行搜索之前,请等待搜索输入可见:

var EC = protractor.ExpectedConditions, 
    searchInput = element(by.id("search")); 
browser.wait(EC.visibilityOf(searchInput), 5000, "Search input has not become visible"); 
+0

是的,我已经在脚本中完成了这些操作。或者,也许我需要把另一个browser.wait在我的下一个脚本执行之前? – Marj

+0

@Marj是的,这个想法是把browser.waits放在特定的地方,比如在'beforeEach()'等待一个页面被完全加载。 – alecxe

+0

好的,非常感谢 – Marj

0

我明白了,尽管我认为这只是一个临时解决方案,但在下一个脚本执行之前,我在每个脚本中包含了browser.sleep,它暂时可用。