在Selenium中,您通过IWebElement实例访问正在操作的浏览器的底层DOM。像这样:
假设您有如上例中所示的“domWrapper”实例,但您没有等式右侧;这意味着a)您不知道元素实际代表什么,b)您不知道它是如何定位的。在这两个前提条件下,是否可以使用Selenium为该元素分配一个id?所有我见过的为元素分配id的例子都利用了Javascript和定位器来找到dom中的实例。
我最初提出的问题(没有人理解 :-))
任何想法如何在Selenium中为任意元素分配id?通过IWebElement接口,我可以引用DOM中的元素,并且我知道驱动程序支持执行JavaScript,我只是不知道如何在没有id时唯一地引用一个元素。
伪代码示例(此代码使用属性定位DOM元素以操纵id,在我的情况下,我没有这样的唯一属性可借助)。
```在Selenium中,您通过IWebElement实例访问正在操作的浏览器的底层DOM。像这样:```
IWebElement domWrapper = driver.FindElement(By.Name("q"));
假设您有如上例中所示的“domWrapper”实例,但您没有等式右侧;这意味着a)您不知道元素实际代表什么,b)您不知道它是如何定位的。在这两个前提条件下,是否可以使用Selenium为该元素分配一个id?所有我见过的为元素分配id的例子都利用了Javascript和定位器来找到dom中的实例。
我最初提出的问题(没有人理解 :-))
任何想法如何在Selenium中为任意元素分配id?通过IWebElement接口,我可以引用DOM中的元素,并且我知道驱动程序支持执行JavaScript,我只是不知道如何在没有id时唯一地引用一个元素。
伪代码示例(此代码使用属性定位DOM元素以操纵id,在我的情况下,我没有这样的唯一属性可借助)。
public string Id
{
get { return GetAttribute("id"); }
set
{
var finder = string.Format("document.querySelector('[{0}=\"{1}\"]')", "data-bind", element.GetAttribute("data-bind"));
string setId = "('id', '_id__'+(Math.floor(Math.random()*10000000)+1));";
string js = finder + ".setAttribute" + setId + ";";
Driver.ExecuteJavascript(js);
}
}
Driver.ExecuteJavascript("arguments[0].setAttribute('id','123');", element);
- ievche