我正在重构脚本,目前正在执行以下操作;
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();
});
我这样做是出于可读性目的,我有一个“和”更易读的场景,还有一个“何时”更适用的场景。
我看过以下内容。
@Then("^(?:it's do something|it's do another thing)$");
允许将多个方案名称用于同一功能,但可悲的是,我正在寻找相反的情况。
任何帮助将不胜感激。
答案 0 :(得分:2)
我们正在使用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();
});
答案 1 :(得分:2)
谢谢@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();
});
我相信这可能是更好的做法。