使用selenium(c#)在表中循环
我在用HTML表的结果填写这本词典时遇到了一个问题。 HTML如下所示:使用selenium(c#)在表中循环,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我在用HTML表的结果填写这本词典时遇到了一个问题。 HTML如下所示: <td class="name"> <span data-bind="text:'hierarchyId'"></span> <span data-bind="text:'name'"></span> </td> 我想用hierarchyid和每个td的名称来填充dictionary,但它只填充第一列,在第二次迭代
<td class="name">
<span data-bind="text:'hierarchyId'"></span>
<span data-bind="text:'name'"></span>
</td>
我想用hierarchyid和每个td的名称来填充dictionary,但它只填充第一列,在第二次迭代中返回错误,即dictionary中已经存在相同的ID。
请给我一些建议
public Dictionary<string,string> ListOfSections()
{
Dictionary<string,string> newDictionary = new Dictionary<string,string>();
IList<IWebElement> tdSectionName = sectionTable.FindElements(By.XPath("//td[@class='name']"));
foreach (IWebElement element in tdSectionName)
{
IWebElement hierarchy = element.FindElement(By.XPath("//span[@data-bind='text: hierarchyId']"));
IWebElement name = element.FindElement(By.XPath("//span[@data-bind='text: Name']"));
newDictionary.Add(hierarchy.Text, name.Text);
}
return newDictionary;
}
公共字典ListOfSections()
{
Dictionary newDictionary=新字典();
IList tdSectionName=sectionTable.FindElements(By.XPath(“//td[@class='name']);
foreach(tdSectionName中的IWebElement元素)
{
IWebElement hierarchy=element.FindElement(By.XPath(//span[@data bind='text:hierarchyId']);
IWebElement name=element.FindElement(By.XPath(//span[@data bind='text:name']);
添加(hierarchy.Text,name.Text);
}
返回新字典;
}
将/
添加到xpath以获得如下所示的子元素,或使用css选择器:
public Dictionary<string,string> ListOfSections()
{
Dictionary<string,string> newDictionary = new Dictionary<string,string>();
IList<IWebElement> tdSectionName = sectionTable.FindElements(By.XPath("//td[@class='name']"));
foreach (IWebElement element in tdName)
{
IWebElement hierarchy = element.FindElement(By.XPath(".//span[@data-bind='text: hierarchyId']"));
IWebElement name = element.FindElement(By.XPath(".//span[@data-bind='text: Name']"));
newDictionary.Add(hierarchy.Text, name.Text);
}
return newDictionary;
}
public Dictionary<string,string> ListOfSections()
{
Dictionary<string,string> newDictionary = new Dictionary<string,string>();
IList<IWebElement> tdSectionName = sectionTable.FindElements(By.CssSelector("td.name"));
foreach (IWebElement element in tdName)
{
IWebElement hierarchy = element.FindElement(By.CssSelector("span[data-bind='text: hierarchyId']"));
IWebElement name = element.FindElement(By.CssSelector("span[data-bind='text: Name']"));
newDictionary.Add(hierarchy.Text, name.Text);
}
return newDictionary;
}
公共字典ListOfSections()
{
Dictionary newDictionary=新字典();
IList tdSectionName=sectionTable.FindElements(By.XPath(“//td[@class='name']);
foreach(tdName中的IWebElement元素)
{
IWebElement hierarchy=element.FindElement(By.XPath(“.//span[@data bind='text:hierarchyId']);
IWebElement name=element.FindElement(By.XPath(“.//span[@data bind='text:name']);
添加(hierarchy.Text,name.Text);
}
返回新字典;
}
Css选择器:
public Dictionary<string,string> ListOfSections()
{
Dictionary<string,string> newDictionary = new Dictionary<string,string>();
IList<IWebElement> tdSectionName = sectionTable.FindElements(By.XPath("//td[@class='name']"));
foreach (IWebElement element in tdName)
{
IWebElement hierarchy = element.FindElement(By.XPath(".//span[@data-bind='text: hierarchyId']"));
IWebElement name = element.FindElement(By.XPath(".//span[@data-bind='text: Name']"));
newDictionary.Add(hierarchy.Text, name.Text);
}
return newDictionary;
}
public Dictionary<string,string> ListOfSections()
{
Dictionary<string,string> newDictionary = new Dictionary<string,string>();
IList<IWebElement> tdSectionName = sectionTable.FindElements(By.CssSelector("td.name"));
foreach (IWebElement element in tdName)
{
IWebElement hierarchy = element.FindElement(By.CssSelector("span[data-bind='text: hierarchyId']"));
IWebElement name = element.FindElement(By.CssSelector("span[data-bind='text: Name']"));
newDictionary.Add(hierarchy.Text, name.Text);
}
return newDictionary;
}
公共字典ListOfSections()
{
Dictionary newDictionary=新字典();
IList tdSectionName=sectionTable.FindElements(By.CssSelector(“td.name”));
foreach(tdName中的IWebElement元素)
{
IWebElement hierarchy=element.FindElement(由.CssSelector(“span[data bind='text:hierarchyId']));
IWebElement name=element.FindElement(由.CssSelector(“span[data bind='text:name']));
添加(hierarchy.Text,name.Text);
}
返回新字典;
}
An需要检查层次结构和名称是否不为null!。这是真的吗?解释一下,空是什么意思?可能父元素没有span[data bind='text:hierarchyId']或span[data bind='text:Name']子元素?@isaid您应该知道。如果找不到,你会被解雇的error@runningman您可以使用element.FindElements(通过.CssSelector(“span[data bind='text:hierarchyId'])
并检查大小。如果大于0,则元素退出。foreach(tdName中的IWebElement元素)
是否应使用tdSectionName
列表?我不知道您从何处获得tdName
。您还可以确保html是正确的,我们没有看到span的数据绑定
属性。您是对的。我正在使用tdSectionName,但在上传之前编辑了代码。Html不完整。我只是想指出,在一个td元素中有两个span,所以我绘制了html。但是是的,html.Ty中有数据绑定属性供您注释