我正在尝试使用Selenium C#获取网页中的所有表格行。 以下是从网页上查看所有tr的代码:
var trElements = driver.FindElements(By.TagName("tr"));
这会正确显示数据。例如,tr元素编号35具有文本' canara bank'在其中,可以在下面的图像中看到。
现在我试图只提取所有tr元素的文本。通过使用LINQ或使用for循环:
string[] strrr= trElements.Select(t => t.Text).ToArray();
令人惊讶的是,大多数元素的Text属性都没有显示web元素中显示的数据。一些元素的随机数据不断显示或消失。
我想确保将web元素的数据正确转换为字符串数组。怎么做到这一点?
答案 0 :(得分:1)
我认为有3种可能性。
1。行不可见。所以element.Text不能给你文字。在这种情况下,您需要使用absolute
代替#gallery {
margin: 0 auto;
width: 800px;
}
#images {
width: 500px;
height: 500px;
position: relative;
}
#images img {
position: absolute;
left: 0;
top: 0;
max-width: 100%;
max-height: 100%;
}
#thumbnails {
margin: 10px auto 10px auto;
text-align: center;
width: 800px;
}
#thumbnails img {
width: 130px;
height: 130px;
}
。
element.GetAttribute("innerText")
2。脚本没有足够的等待时间。在这种情况下,您只需要添加wait来检查文本长度。
element.Text
3。向下滚动时将显示文本。
string[] strrr = trElements.Select(t => t.GetAttribute("innerText")).ToArray();