2

没有发布 C# 代码和标记页面,有没有人知道为什么这个代码

 var link = _driver.FindElement(By.Id(field + "Field"));
 var id = link.GetAttribute("id");
 var text = link.Text;

给定这个标记

<a id="ForenameField" href="/MyUrl/MyFolder/MyId">3 errors</a>

将一个空字符串分配给文本变量,但如果我在第二行或第三行放置一个断点并检查链接变量,我可以在检查器的 Text 属性上看到元素的内部文本,它显示“3 个错误” ,但 text 的值是一个空字符串。它没有隐藏,如果我添加手表或使用快速查看,我可以看到文字,有什么想法吗?

4

2 回答 2

2

I know this was posted over a year ago, but I had this exact problem too and came across this thread. I was able to solve it by just waiting for the DOM to load--some elements aren't visible until the DOM is updated. So just putting Thread.Sleep(6000) or whatever after navigating to the page got it to work for me.

于 2015-02-13T15:48:32.637 回答
2

好吧,这是我的错。使用 jquery 在包含问题中的 html 的 div 上切换类,这意味着虽然用户看到 div 出现,但隐藏 div 的类仍然在标签中。有点像这样

<div class="hideThis showThis"><!-- my elements /--></div>

这使得 Selenium 没有给我一个文本值是正确的。然而奇怪的是,Visual Studio 调试器认为应该有一个值。Visual Studio 似乎与我所看到的一致,但 Selenium 对hideThis类的存在更加迂腐。

我的想法是,如果您看不到它,就无法与之交互,因此值得从您希望具有值的元素中查找 html 图,以查看是否存在任何会隐藏您的类元素。

随意建议我删除这个相当明显的智慧。

于 2013-05-22T14:35:39.957 回答