Selenium从xpath获取动态id

Selenium从xpath获取动态id,selenium,selenium-rc,xpath,Selenium,Selenium Rc,Xpath,Selenium RC中有没有从xpath获取id的方法 如果我有xpath /html/body/div/div//input 我想获取与xpath关联的所有节点的id您可以通过运行javascript,使用this.browserbot.findElement('/html/body/div/div//input')来获取: /html/body/div/div//input 当然,这取决于源语言,但可能是这样的(在perl中,未经测试): 您可以将getAttribute与getXpa

Selenium RC中有没有从xpath获取id的方法

如果我有xpath

/html/body/div/div//input

我想获取与xpath关联的所有节点的id

您可以通过运行javascript,使用
this.browserbot.findElement('/html/body/div/div//input')
来获取:

/html/body/div/div//input
当然,这取决于源语言,但可能是这样的(在perl中,未经测试):


您可以将
getAttribute
getXpathCount
结合使用

Java中的Selenium 1示例如下:

int inputs = selenium.getXpathCount("/html/body/div/div/descendant::input").intValue();
for (int i=1; i<=inputs; i++) {
    System.out.println(selenium.getAttribute("/html/body/div/div/descendant::input[" + i + "]@id"));
}
List<WebElement> inputs = driver.findElements(By.xpath("/html/body/div/div/descendant::input"));
for (WebElement input : inputs) {
    System.out.println(input.getAttribute("id"));
}
int inputs=selenium.getXpathCount(“/html/body/div/div/genderant::input”).intValue();

对于(int i=1;我很抱歉,我没有…,唯一真正的区别是调用的selenium函数,查看Java文档,您需要
getXpathCount
getEval
,两者都在
DefaultSelenium
objectOk中。我知道了如何在Java中实现它,但我有一个问题,因为我的节点不是输入[1]来输入[i].My xpath不是一个绝对的xpath,基本上我需要以/html/body/div/div开头的xpath的所有输入。我想你没有理解我的最后一条评论。路径是/html/body/div/div//input,但我在//之间缺少元素,因为我不关心//之间的内容。我没有输入[1]-input[I]但是我确实有/html/body/div[1]/div/input[1]和/html/body/div[2]/form/div/input[1]。我的xpath语法应该是正确的,因为getxpathcount()给了我正确的数字,它也在Xpather中进行计算。啊,这有点棘手……现在我已经在selenium核心中进行了深入研究,我有各种未经测试的代码供您尝试:)您的代码也可以工作,但您拼写的后代错误,所以一开始我得到了无效的xpath:P。我已经更正了输入错误(很抱歉)。但是,我要警告您,
/
/genderant::
不同,您可能会遇到一些意外行为。另外,当有一个Selenium命令获取属性时,为什么要使用所有的JavaScript呢?我的代码(Selenium 1)的唯一参数是,如果有大量元素,我的代码将只访问浏览器一次,而不是每个元素一次。根据我的经验,这可能需要很长很长时间。在Selenium 2中,您的代码显然要好得多。
List<WebElement> inputs = driver.findElements(By.xpath("/html/body/div/div/descendant::input"));
for (WebElement input : inputs) {
    System.out.println(input.getAttribute("id"));
}