【发布时间】:2019-12-31 05:17:08
【问题描述】:
我有一个项目可以使用带有 C# 的 Selenium WebDriver 单击网页上的特定链接,我正在努力寻找一种干净的方法来使用一个考虑特定情况的数组来遍历它们。
我了解基本的 driver.FindElement(By.XPath(" "));
但我不确定如何创建一个 WebElement 数组来提供一个 foreach 语句,该语句将在特定 div 类中搜索 By.TagName("a") 而无需拉动页面上的每个链接。
网站标题的示例:
<header>
<div id="ContainerTopStrip">
<div class="ContainerWidth">
<div class="headerMenu">
<a href="Account/IntakeLogin" title="Report">Report</a>
<a href="/rfs" title="Request">Request</a>
<a href="javascript:void(0);" onclick="openFullWindow();" title="Lookup">Lookup</a>
</div>
</div>
</div>
</header>
我刚刚使用 findelement 的基本示例:
using System;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Chrome;
using System.Collections.Generic;
class Program
{
static void Main()
{
using (IWebDriver driver = new ChromeDriver("C:\\"))
{
driver.Navigate().GoToUrl("xxx");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);
driver.FindElement(By.XPath("//a[text()=\"xxx\"]")).Click();
// TODO: Figure out how to assert route change occurred
driver.FindElement(By.XPath("//a[text()=\"xxx\"]")).Click();
driver.Navigate().Back();
driver.FindElement(By.XPath("//a[text()=\"xxx/I\")]")).Click();
driver.Navigate().Back();
Console.WriteLine("This is what happens when you don't know how to make an array.");
driver.Quit();
}
}
}
总结一下:
需要帮助找到一种方法来创建一个数组,该数组可以找到要在循环中单击的特定链接,因为在搜索了一段时间之后,这似乎是最简洁的解决方案。如果有更好的建议,我愿意接受。总的来说,对 C#/Selenium 来说是全新的。
【问题讨论】:
标签: c# .net selenium-webdriver visual-studio-code