在网页中,我有一个包含十列的gridView。六个对用户可见,四个离开页面。要查看其他四个,用户需要水平滚动。
在selenium中,我有一个通用方法可以将所有列标题元素放入集合
public IWebElement[] GetColumnHeaders()
{
IWebElement[] columnHeaders = mainResult.FindElements(By.ClassName("dxgvHeader")).ToArray();
return columnHeaders;
}
此集合包含预期的十个元素。但只有前六个包含Text。
因此,如果我得到集合中每个元素的文本,我会得到;
每个columnHeader都是IWebElement
,它似乎来自对象RemoteWebElement
。
在调试器中,我可以看到columnHeader [7]的属性,显示为
[OpenQA.Selenium.Remote.RemoteWebElement]
Displayed = false
Enabled = true
...
Text = ""
当我展开[OpenQA.Selenium.Remote.RemoteWebElement]
并查看其基本属性时,我看到了;
Coordinates = {OpenQA.Selenium.Remote.RemoteCoordinates}
Displayed = true
Enabled = true
...
Text = "text for header 7"
因此IWebElement
.Text
属性 为空。
但其RemoteWebElement
基础.Text
属性不是为空。
他们刚刚完全没有初始化吗?
一些问题:
IWebElement
未获得Text
或Displayed
,但基本RemoteWebElement
获得Text
和Displayed
?
为用户正确显示gridView没有任何问题。如果我检查页面,我会看到elementIDs。
答案 0 :(得分:0)
我发布这个作为答案,但它不是最好的。
强制驱动程序通过
导航到Elementvar dummy = (element as OpenQA.Selenium.Remote.RemoteWebElement).LocationOnScreenOnceScrolledIntoView;
这会导致ChromeDriver自动将网页滚动到该对象,这也会改变预期的属性
Displayed=true
Text="something"