即使存在,也无法获取Web元素的值

时间:2018-01-27 04:48:47

标签: c# selenium-webdriver

我正在尝试使用Selenium C#获取网页中的所有表格行。 以下是从网页上查看所有tr的代码:

  var trElements = driver.FindElements(By.TagName("tr"));

这会正确显示数据。例如,tr元素编号35具有文本' canara bank'在其中,可以在下面的图像中看到。

enter image description here

现在我试图只提取所有tr元素的文本。通过使用LINQ或使用for循环:

string[] strrr=      trElements.Select(t => t.Text).ToArray();

令人惊讶的是,大多数元素的Text属性都没有显示web元素中显示的数据。一些元素的随机数据不断显示或消失。

enter image description here

我想确保将web元素的数据正确转换为字符串数组。怎么做到这一点?

1 个答案:

答案 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();