Selenium-如果继承了IWebDriver属性,为什么它们与RemoteWebDriver属性不同
本文关键字:属性 RemoteWebDriver 继承 如果 IWebDriver Selenium- 为什么 | 更新日期: 2023-09-27 18:27:19
在一个网页中,我有一个包含十列的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为用户正确显示,没有任何问题。如果我查看页面,就会看到elementID。
我把这个作为答案发布,但它不是最好的答案。
通过强制驾驶员导航到元素
var dummy = (element as OpenQA.Selenium.Remote.RemoteWebElement).LocationOnScreenOnceScrolledIntoView;
这会导致ChromeDriver自动将网页滚动到该对象,这也会更改预期的属性
Displayed=true
Text="something"