我正在尝试获取this site的标签ul
中可用的链接列表。
我尝试获取的链接位于More bets
内部,具体是:
所有这些链接都位于一个ID为ul
的div中,正如我之前所说的那样,位于bettype-tabs
标记中。
我写了这段代码:
var chromeOpts = new ChromeOptions();
chromeOpts.AddArguments("headless");
var chromeDriverService = ChromeDriverService.CreateDefaultService();
driver = new ChromeDriver(chromeDriverService, chromeOpts);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
driver.Navigate().GoToUrl(new Uri("http://www.oddsportal.com/soccer/mexico/copa-mexico/cafetaleros-de-tapachula-atletico-san-luis-fcfIQtLo/?r=1#ah;2"));
var listItems = driver.FindElement(By.Id("bettype-tabs"))?.FindElements(By.TagName("li"));
foreach(var c in listItems)
{
Console.WriteLine(c.Text);
}
listItems.Where(li => li.Text == "HT/FT" || li.Text == "Half Time / Full Time").Single().Click();
现在最后一行将返回:
序列不包含任何元素
在foreach
印刷品上显示事实
那么More bets
内的链接为什么不在列表中?
如何处理这种情况?
答案 0 :(得分:2)
请尝试以下操作以获取“更多投注”下的链接:
var listItems = driver.FindElement(By.Id("bettype-tabs"))?.FindElements(By.TagName("p"))?.FindElements(By.TagName("a"));
foreach(var c in listItems)
{
Console.WriteLine(c.GetAttribute("innerHTML"));
}
答案 1 :(得分:1)
而不是:
var listItems = driver.FindElement(By.Id("bettype-tabs"))?.FindElements(By.TagName("li"));
使用此:
var listItems = driver.FindElement(By.CssSelector("div#bettype-tabs li"));
并像完成它一样循环。
,如果您想单击任何特定元素,则:
foreach(var c in listItems)
{
if(c.Text.Trim().Contains("DC")){
c.Click()
}
}