查找动态xpath不起作用的元素

时间:2016-01-12 09:55:32

标签: java xpath webdriver

我在HTML中有这个:

<textarea name="comment" class="form-control" rows="3" id="textarea_1160688690910416779_2159935466"></textarea>

我想与id = textarea_进行互动,但数字在&#34; _&#34;之后不断变化。为了解决这个问题,我使用了这段代码:

driver.findElement(By.xpath("[starts-with(@id, 'textarea')")).sendKeys(comment);

但是我收到了错误:

org.openqa.selenium.NoSuchElementException: Unable to locate element:

3 个答案:

答案 0 :(得分:0)

使用

driver.findElement(By.xpath("//textarea[starts-with(@id,'textarea_')]")).sendKeys(comment);

答案 1 :(得分:0)

您收到此错误的原因是您需要在当前XPath之前添加“//”。 您可以使用starts-with,这样:

("//textarea[starts-with(@id, 'textarea_')]")

你也可以试试'包含':

("//textarea[contains(@id, 'textarea_')]")

在两种方式中,您可以使用// * [...而不是textarea,更多情况

答案 2 :(得分:0)

您的Xpath不是有效的Xpath。

  • 它应包含路径和标记名称
  • 它应该是平衡的(你的[未关闭]

因此,如果你的标签是textarea,如果它在顶部:使用 / textarea

如果不在顶部,请使用 // textarea

这给出:&#34; // textarea [starts-with(@id,&#39; textarea&#39;)]&#34;

要与硒一起使用,您还可以阅读:JAVA - How to use xpath in selenium

那:Webdriver findElements By xpath