我如何将 'When' 和 'And' 用于同一个函数而不重复它
How do i use both 'When' and 'And' for the same function without duplicating it
我正在重构我的脚本,目前正在执行以下操作;
When("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
And("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
我这样做是出于可读性的目的,我有一个 'And' 更具可读性的场景以及 'When' 更适用的场景。
我看过以下..
@Then("^(?:it's do something|it's do another thing)$");
这允许将多个方案名称用于同一功能,但遗憾的是,我正在寻找相反的名称。
如有任何帮助,我们将不胜感激。
我们正在使用 Specflow,当我们需要使用与 When
And
相同的步骤时,或者然后,我们只需执行以下操作:
[Given(@"I enter all required customer information")]
[When(@"I enter all required customer information")]
[Then(@"I enter all required customer information")]
public void GivenIEnterAllRequiredCustomerInformation()
{
MyMethod();
}
因此,对于您的情况,请尝试类似的操作:
When("I click the button {string}", And("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
谢谢@IPolnik,你的解决方案除了一部分是正确的,用逗号分隔 'When' 和 'And',如下所示。
When ("I click the button {string}", And ("i click the button {string}"), (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
如果没有你的建议,我永远不会到达那里,所以非常感谢你,这也是为什么我说你解决了我的问题。
祝你有愉快的一天,杰克。
编辑:我还发现这种语法也有效
When ("I click the button {string}" | And ("i click the button {string}"), (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
我相信这可能是更好的做法。
我正在重构我的脚本,目前正在执行以下操作;
When("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
And("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
我这样做是出于可读性的目的,我有一个 'And' 更具可读性的场景以及 'When' 更适用的场景。
我看过以下..
@Then("^(?:it's do something|it's do another thing)$");
这允许将多个方案名称用于同一功能,但遗憾的是,我正在寻找相反的名称。
如有任何帮助,我们将不胜感激。
我们正在使用 Specflow,当我们需要使用与 When
And
相同的步骤时,或者然后,我们只需执行以下操作:
[Given(@"I enter all required customer information")]
[When(@"I enter all required customer information")]
[Then(@"I enter all required customer information")]
public void GivenIEnterAllRequiredCustomerInformation()
{
MyMethod();
}
因此,对于您的情况,请尝试类似的操作:
When("I click the button {string}", And("I click the button {string}", (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
谢谢@IPolnik,你的解决方案除了一部分是正确的,用逗号分隔 'When' 和 'And',如下所示。
When ("I click the button {string}", And ("i click the button {string}"), (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
如果没有你的建议,我永远不会到达那里,所以非常感谢你,这也是为什么我说你解决了我的问题。
祝你有愉快的一天,杰克。
编辑:我还发现这种语法也有效
When ("I click the button {string}" | And ("i click the button {string}"), (buttonID, next) => {
pageElement = driver.findElement(By.id(buttonID));
driver.wait(until.elementIsVisible(pageElement), 10000);
pageElement.click();
next();
});
我相信这可能是更好的做法。