代码在java中有效,但在c中无效,或者找不到等效代码



我正在尝试点击网页上的每个链接(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中,而不是重复相同的FindElements3次。

相关内容

  • 没有找到相关文章

最新更新