我是新的C#和硒。我已经成功验证了一个场景,但是涉及到很多重复。由于我在测试用例中只有4种语言可供测试,因此很容易。我想知道如果我们要测试多种语言,我们该如何处理。我相信应该有一个简单的方法。请有人帮忙吗。请参阅下面的代码。
Browser.Driver.FindElement(By.Id("dropdownMenuLang")).Click();
Browser.Driver.FindElement(By.XPath("//span[contains(., 'Espa')]")).Click();
Thread.Sleep(2000);
IWebElement body = Browser.Driver.FindElement(By.TagName("body"));
Assert.IsTrue(body.Text.Contains("Temperatura del frigorífico durante"));
Browser.Driver.FindElement(By.Id("dropdownMenuLang")).Click();
Browser.Driver.FindElement(By.XPath("//span[contains(., 'Portu')]")).Click();
Thread.Sleep(2000);
IWebElement body1 = Browser.Driver.FindElement(By.TagName("body"));
Assert.IsTrue(body1.Text.Contains("Gerenciamento De Serviços"));
Browser.Driver.FindElement(By.Id("dropdownMenuLang")).Click();
Browser.Driver.FindElement(By.XPath("//span[contains(., 'Fran')]")).Click();
Thread.Sleep(2000);
IWebElement body2 = Browser.Driver.FindElement(By.TagName("body"));
Assert.IsTrue(body2.Text.Contains("Gestion des emplacements"));
Browser.Driver.FindElement(By.Id("dropdownMenuLang")).Click();
Browser.Driver.FindElement(By.XPath("//span[contains(., 'Türkçe')]")).Click();
Thread.Sleep(2000);
IWebElement body3 = Browser.Driver.FindElement(By.TagName("body"));
Assert.IsTrue(body3.Text.Contains("Konum Yönetimi"));
答案 0 :(得分:0)
正如您所提到的,您要测试 4 语言,因此您可以按如下方式编写function()
:
public void clickLang_assertContent(String lang, String text_to_assert)
{
Browser.Driver.FindElement(By.Id("dropdownMenuLang")).Click();
Browser.Driver.FindElement(By.XPath("//span[.='" + lang + "']")).Click();
WebDriverWait wait = new WebDriverWait(Browser.Driver, new TimeSpan(0,0,10));
IWebElement body = wait.Until(ExpectedConditions.ElementIsVisible(By.TagName("body")));
Assert.IsTrue(body.Text.Contains(text_to_assert));
}
现在,您可以在main()
或@Test
带注释的类中使用选项调用函数clickLang_assertContent()
,如下所示:
clickLang_assertContent("Espa", "Temperatura del frigorífico durante");
clickLang_assertContent("Portu", "Gerenciamento De Serviços");
clickLang_assertContent("Fran", "Gestion des emplacements");
clickLang_assertContent("Türkçe", "Konum Yönetimi");
答案 1 :(得分:0)
更有条理的处理方式,请注意扩展的灵活性是使用classes
来定义test case
,如下所示:
public class TestCases
{
public TestCases(string elementTag, string id, string xpath, string textToMatch)
{
ElementTag = elementTag;
Id = id;
XPath = xpath;
TextToMatch = textToMatch;
}
public string ElementTag { get; set; }
public string Id { get; set; }
public string XPath { get; set; }
public string TextToMatch { get; set; }
}
此类将处理您需要更改Assertions
所需的所有属性。
您可以写一个List<TestCases>
来保存这些测试用例的所有values
。如果您想稍后扩展您的功能,这是您在此处需要更改或添加内容的唯一内容。例如下面:
List<TestCases> CurrentTestCases = new List<TestCases>()
{
new TestCases("body", "dropdownMenuLang", "//span[contains(., 'Espa')]", "Temperatura del frigorífico durante"),
new TestCases("body", "dropdownMenuLang", "//span[contains(., 'Portu')]", "Gerenciamento De Serviços"),
new TestCases("body", "dropdownMenuLang", "//span[contains(., 'Fran')]", "Gestion des emplacements"),
new TestCases("body", "dropdownMenuLang", "//span[contains(., 'Türkçe')]", "Konum Yönetimi")
};
最后,您需要一种方法来快速执行整个操作。您可以使用如下所示的简单foreach
循环执行此操作:
private void StartTesting()
{
foreach (var testCase in CurrentTestCases)
{
Browser.Driver.FindElement(By.Id(testCase.Id)).Click();
Browser.Driver.FindElement(By.XPath(testCase.XPath)).Click();
WebDriverWait wait = new WebDriverWait(Browser.Driver, new TimeSpan(0,0,10));
IWebElement body3 = Browser.Driver.FindElement(By.TagName(testCase.ElementTag));
Assert.IsTrue(body3.Text.Contains(testCase.TextToMatch));
}
}
我已经取出了所有的字符串硬编码,只是因为你想要那种灵活性,如果你不这样做,你可以通过简单地删除课堂上的属性来减少它。