c# - 使用 Webdriver 循环浏览页面上的每个链接

标签 c# javascript selenium selenium-webdriver

我被要求创建一个测试,可以使用 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/

相关文章:

c# - .Net 4.0 框架和 4.5 框架之间的区别?

javascript - 异步函数中的回调和错误处理

php - 如何创建包含键和值的javascript数组?

selenium - 使用 GUI 进行自动化网站测试

testing - Selenium 网络驱动程序。等待元素后 click() 卡住测试

python - 自定义关键字机器人框架 selenium webdriver python "object has no attribute ' get_attribute' "

c# - 具有检查元素功能的 HTML 渲染?如何使用 C#

c# - 如何通过 app.config 或 web.config 或其他方式全局指定 DataContractSerializer EmitDefaultValue = false?

c# - 如何在远程计算机上运行 ClickOnce 应用程序 (.appref-ms)?

javascript - 当模型是 ViewModel 时通过 JS 访问模型属性