我正在尝试使用selenium web驱动程序访问(属性是您在Chrome浏览器开发人员工具中可以看到的,当您在浏览器上突出显示表格控件时)表格对象的属性。我的要求是访问诸如rows和childNodes之类的表属性。我使用下面的代码来获取表的属性。
var propVlu = tblObj.GetAttribute("baseURI");
Console.WriteLine(propVlu.ToString());
这里代码的输出正是我想要的:
Test Name: TblIterateDemo
Test Outcome: Passed
Result StandardOutput:
http://testbpp.corum.com.au/main/(S(2zpcwh5e2xp4wfkbkhvxranb))/Customer.aspx
但是如果我尝试访问具有如下所示的树结构的属性:
var propVlu = tblObj.GetAttribute(@"rows[""0""].baseURI");
if(propVlu != null)
{
Console.WriteLine(propVlu.ToString());
}
else
{
Console.WriteLine("Property not found");
}
我得到以下输出
Property not found
有人可以帮助我访问属于浏览器上的Web控件控件的这些属性。请查找包含图片的附件。当我在Chrome浏览器开发者工具属性标签上检查时,属性行存在且也不为空。
Image of my Question Description
欢呼声, 巴勒特。
答案 0 :(得分:0)
Selenium C#,chrome驱动程序返回以下属性的空值。这里的rows属性也返回null,所以显然你会得到
对象引用未设置为对象的实例 在C#代码中出现问题。
Attribue : assignedSlot value : Null value from Selenium
Attribue : attributes value : Null value from Selenium
Attribue : caption value : Null value from Selenium
Attribue : childNodes value : Null value from Selenium
Attribue : children value : Null value from Selenium
Attribue : classList value : Null value from Selenium
Attribue : dataset value : Null value from Selenium
Attribue : draggable value : Null value from Selenium
Attribue : firstChild value : Null value from Selenium
Attribue : firstElementChild value : Null value from Selenium
Attribue : hidden value : Null value from Selenium
Attribue : isContentEditable value : Null value from Selenium
Attribue : lastChild value : Null value from Selenium
Attribue : lastElementChild value : Null value from Selenium
Attribue : nextElementSibling value : Null value from Selenium
Attribue : nextSibling value : Null value from Selenium
Attribue : nodeValue value : Null value from Selenium
Attribue : offsetParent value : Null value from Selenium
Attribue : ownerDocument value : Null value from Selenium
Attribue : parentElement value : Null value from Selenium
Attribue : parentNode value : Null value from Selenium
Attribue : prefix value : Null value from Selenium
Attribue : previousElementSibling value : Null value from Selenium
Attribue : previousSibling value : Null value from Selenium
Attribue : rows value : Null value from Selenium
Attribue : shadowRoot value : Null value from Selenium
Attribue : tBodies value : Null value from Selenium
Attribue : tFoot value : Null value from Selenium
Attribue : tHead value : Null value from Selenium
List<string> props = File.ReadAllLines(@"C:\Users\muralidharand\Desktop\prop.txt").ToList();
IWebDriver driver = new ChromeDriver();
driver.Url = "http://localhost:801/mywebapp/Create?jobid=4";
driver.Navigate();
IWebElement atrWF = driver.FindElement(By.Id("tblParticulars"));
foreach (string prop in props)
{
string result = atrWF.GetAttribute(prop);
if (result == null)
{
result = "Null value from Selenium";
File.AppendAllText(@"C:\Users\muralidharand\Desktop\prop_output.txt", "Attribue : " + prop + " value : " + result + Environment.NewLine);
}
}
希望这会对你有所帮助。
答案 1 :(得分:0)
我终于找到了解决它的方法,我已经完成了以下操作来访问表对象的rows属性:
var contents = ((IJavaScriptExecutor)drivr).ExecuteScript("return arguments[0].rows.length; ", tblObj);
Console.WriteLine(contents.ToString());
我从这个地方得到了一些帮助 http://grokbase.com/t/gg/selenium-users/128dp25q60/how-to-get-all-html-attributes-for-a-tag