我正在尝试阅读以下列表:
<ol class="sublist">
<li>
<a href="/Home/Article.aspx? level=3XAP2FPAX6J7I3kztATGuYyXAP2BPAXDahIQXAP3DPAXXAP3DPAX&articleId=R866G0jVPwSUTNiC7yuIXAP2BPAXQXAP3DPAXXAP3DPAX">Sort Out Your Values</a>
</li>
<li>
<a href="/Home/Article.aspx?level=3XAP2FPAX6J7I3kztATGuYyXAP2BPAXDahIQXAP3DPAXXAP3DPAX&articleId=v2CBBm83qhsNjLKWbtfCNwXAP3DPAXXA P3DPAX">Establish Realistic Goals</a>
</li>
<li>
<a href="/Home/Article.aspx? level=3XAP2FPAX6J7I3kztATGuYyXAP2BPAXDahIQXAP3DPAXXAP3DPAX&articleId=yBjSNWqdoXAP2FPAXvuZzib2H88pQXAP3DPAXXAP3DPAX">Determine Your Monthly Net Income</a>
这是我为它写的代码;但目前,每次运行;我的字符串空了。我想获取内部文本,以便在我的循环中抓住它并单击它并返回上一屏幕。
IWebElement container = driver.FindElement(By.ClassName("sublist"));
IList<IWebElement> elements = driver.FindElements(By.TagName("a"));
string [] newlink = new string[elements.Count()];
for (int i = 0; i < newlink.Count(); i++)
{
if (newlink[i] != null)
{
driver.FindElement(By.LinkText(newlink[i])).Click();
driver.WaitForElement(By.CssSelector("[id$='hlnkPrint']"));
driver.Navigate().Back();
}
}
该脚本能够运行但是得到的链接为空,所以我添加了一个检查,看看它们中是否有任何一个是空的,结果是所有这些都是。 我确定它与'.text'或'ToString'有关,但我不知道在哪里实现它。
由于
答案 0 :(得分:1)
您的代码存在一些问题
- 您尚未设置newlink
的值,只是创建它。
- Count
是属性,但您将其用作方法
- 链接文本是.Text
的{{1}}属性,您需要访问该属性
- 您当前的代码可能会点击一个链接,返回后会抛出IWebElement
。
以下
- 我将StaleElementException
设置为newlink
的链接的Text
值
- 然后我遍历链接文本数组
elements
您可以在IWebElement container = driver.FindElement(By.ClassName("sublist"));
IList<IWebElement> elements = container.FindElements(By.TagName("a"));
string[] newlink = new string[elements.Count];
for (int i = 0; i < newlink.Count; i++)
{
newlink[i] = elements[i].Text;
}
for (int i = 0; i < newlink.Count; i++)
{
if (newlink[i] != null)
{
driver.FindElement(By.LinkText(newlink[i])).Click();
driver.WaitForElement(By.CssSelector("[id$='hlnkPrint']"));
driver.Navigate().Back();
}
}
上使用FindElement()
。所以在这种情况下,如果你想找到IWebElement
个孩子的元素,你可以使用container
。