我想在我的应用程序上进行测试,所以第一种情况是身份验证,完成后,我需要在下一页即主页上进行测试,因此如何使用相同的驱动程序而无需重新启动驱动程序第二种情况?我想直接从以下位置开始:@给出我在首页上!
我有一个用于stepdefauthentification的类,另一个用于stepdefSearchCustomer的类,那么如何在第二个类的第一类中使用驱动程序? chromedriver的初始化在第一页中,而我什至无法在第二页中通过执行driver.geturl(“”)来重新启动驱动程序,因为我们需要首先进行身份验证才能显示主页。
这意味着我需要在第一种情况下使用其URL恢复驱动程序,然后在第二种情况下从那里开始。
答案 0 :(得分:1)
您的方案不应该相互依赖,您的方案应该是独立的,在破坏特定方案之前,您应该准备执行它所需的所有条件,并且最好在方案完成后也要清除。
要在多种情况下保留浏览器窗口,请将WebDriver实例设置为静态,例如,可以使用Singleton Holder模式。
我了解您的问题,要测试主页,您需要先登录,所以自然地您可能会认为按顺序执行方案可以解决该问题,但这是不好的方法。
相反,要测试主页,可以将cookie加载到Web驱动程序中,以使其认为您已经登录了会话,或者可以选择创建'before' @Login 挂钩,可在运行场景之前检查是否已登录(如果未登录),则它将运行登录过程。
@Before(value = "@Login")
public void loginIfNeeded()
{
// check you are logged in, if you are, do not login
// if you are not logged in, perform login procedure.
}
示例场景:
@Login
Scenario: Test main page
Given something
When something
Then something
答案 1 :(得分:-1)
我建议使用进行驱动程序和资源管理的qaf。
您的小黄瓜文件将保持不变。要run your gherkin文件,请使用 const DrawerNavigator = createDrawerNavigator(
{
DIPUTADOS: {
screen: DiputadosStack,
navigationOptions
},
BLOQUES: {
screen: BloquesStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-002-b.png")}
/>
);
}
}
},
INTERBLOQUES: {
screen: InterBloquesStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-003-b.png")}
/>
);
}
}
},
COMISIONES: {
screen: ComisionesStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-004-b.png")}
/>
);
}
}
},
AUTORIDADES: {
screen: AutoridadesStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-005-b.png")}
/>
);
}
}
},
"SESIÓN EN VIVO": {
screen: SesionEnVivoStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-006-b.png")}
/>
);
}
}
},
"DIPUTADOS TV": {
screen: DiputadosTVStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-007-b.png")}
/>
);
}
}
},
REGLAMENTOS: {
screen: PDFReglamentosStack,
navigationOptions: {
drawerIcon: () => {
return (
<Image
style={styles.Icon}
source={require("./src/assets/Menu-008-b.png")}
/>
);
}
}
}
},
{
contentComponent: CustomDrawerContentComponent,
drawerWidth: width * 0.63,
contentOptions: {
activeTintColor: blue,
inactiveTintColor: grey,
itemsContainerStyle: {
textAlign: "center"
},
labelStyle: {
fontFamily: "RobotoCondensed-Regular",
fontWeight: "400",
fontSize: 17,
marginLeft: -5
},
iconContainerStyle: {
alignItems: "center"
}
}
}
);
您可以使用GherkinScenarioFactory
property指定要使用的浏览器。您无需编写代码来创建或删除驱动程序。您可以使用driver.name
属性来设置驱动程序会话的行为。
selenium.singletone
#this will tear down driver after each testcase/scenario
selenium.singletone=method
#this will tear down driver after each group and will reuse same driver session for testcases/scenario which are in same group.
selenium.singletone=group
#this will tear down driver after each xml test node in configuration file and will reuse same driver session for testcases/scenario configured under same xml test node.
selenium.singletone=test