我被要求创建一个测试,可以使用 C# 中的 webdriver 循环浏览页面上的所有链接。
我真的不知道从哪里开始,很抱歉没有提供任何代码。
我需要以某种方式选择页面上的所有链接并将它们放入数组等中,然后它们只需循环它们,单击链接,返回上一页,单击下一个链接等。
最佳答案
我认为它是这样的:
foreach (var item in _driver.FindElements(By.TagName("a")))
{
Trace.WriteLine(item.GetAttribute("href"));
}
编辑:
请注意,这是使用 NUnit 从头编写的近似解决方案。
[TestFixture]
class UnitTests
{
[TestFixtureSetUp]
public void FixtureSetup()
{
_driver = new ChromeDriver();
_driver.Manage().Timeouts().ImplicitlyWait(Defaultamount);
_wait = new WebDriverWait(_driver, Defaultamount);
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
_driver.Quit();
}
//...
}
代码如下:
[TestCase("www.googel.com")]
public bool TestAllWebpageLinks(string url, Result = true)
{
_driver.Navigate().GoToUrl(url);
var result = _driver.FindElements(By.TagName("a"))
.Select(o=>o.GetAttribute("href"))
.ToDictionary(o=>o,o=>TestPage(url,o));
return result.All(o => o.Value);
}
public bool TestPage(string url, string link){
try
{
_driver.Navigate().GoToUrl(url);
_driver.FindElement(By.XPath("//a[@href='"+link+"']")).Click();
return true;
}
catch (Exception ex)
{
return false;
}
}
请注意,Resharper 插件将大大简化单元测试的运行。
关于c# - 使用 Webdriver 循环浏览页面上的每个链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25058515/