我正在尝试点击网页上的每个链接(selenium+C#(。下面的代码在java中可以工作,但要让它在c中工作是很有挑战性的。我遇到的问题是代码中的get[i]和chord。我在C#中找不到等价的。除了get[i]和chord之外,其余代码都能正常工作。如何将for循环中的这两行代码转换为c#,或者修改最后两行代码,有什么想法吗?代码的逻辑在java中绝对有效。
IWebElement links3 = OpenPageSteps.driver1.FindElement(By.XPath("//*[@id='content']/ul"));
Console.WriteLine(links3.FindElements(By.TagName("a")).Count());
for (int i=0; i<links3.FindElements(By.TagName("a")).Count; i++)
{
string opentabs = Keys.Chord(Keys.Control,Keys.Enter);
links3.FindElements(By.TagName("a")).get[i].SendKeys(opentabs);
}
您不需要get
关键字。您可以简单地将索引器与[]
一起使用
IWebElement links3 = OpenPageSteps.driver1.FindElement(By.XPath("//*[@id='content']/ul"));
ReadOnlyCollection<IWebElement> aTags = links3.FindElements(By.TagName("a"));
Console.WriteLine(aTags.Count);
for (int i = 0; i < aTags.Count; i++)
{
aTags[i].SendKeys(Keys.Control + Keys.Enter);
}
或者,更好的是,使用foreach
:
foreach (IWebElement element in aTags)
{
element.SendKeys(Keys.Control + Keys.Enter);
}
您可以简单地使用+
组合键。
ReadOnlyCollection
具有Count
属性。无需调用效率较低的LINQCount()
方法。
此外,首先将结果存储在temp中,而不是重复相同的FindElements
3次。