如何使用Java在Selenium中单击此按钮

时间:2019-02-22 14:58:00

标签: java selenium

这是我尝试单击的按钮

<a href="/logout/?t=1550846736%2C09865a11c32ef819fb524c408c8f36cc" class="menu-linkRow">Log out</a>

这是我尝试过的

driver.findElement(By.xpath("//a[contains(@class,'menu-linkRow')]")).click();
driver.findElement(By.xpath("//a[@href='/logout/?t=1550846736%2C09865a11c32ef819fb524c408c8f36cc']")).click();

3 个答案:

答案 0 :(得分:1)

您可以尝试

driver.findElement(by.linkText("Log out")).click();

很明显,如果提供更多详细信息,例如您正在获得的例外以及更多信息!

干杯!

答案 1 :(得分:0)

通常通过 xpath 定位元素是一个坏主意。

尝试其他方法,例如:

  • 通过 CSS选择器进行定位(每次都应该是您的第一种方法)(little guide可以帮助您理解它们)。这包括在元素属性上指定模式的能力,例如:
[attribute~=value]  [title~=flower] Selects all elements with a title attribute containing the word "flower"
  • 通过xpath以外的任何其他策略定位
  • 通过xpath定位是最后的手段。

通过xpath定位被认为是一项昂贵的操作,并且很难维护。

您还可以使用任何喜欢的策略,但是可以获取元素的集合,然后通过自己喜欢的编程技术(即使用Java8 Streams api)将其过滤掉,或者仅在元素内部运行另一个元素搜索,例如:< / p>

element.findBy ...

我强烈建议您采用css选择器,因为它们经常被用来向任何现代Web应用程序添加样式。因此,如果开发人员设法使用CSS选择器解决样式问题,您也将能够做到。

答案 2 :(得分:0)

driver.findElement(by.Css('a.menu-linkRow')).click();

您的第二句话"//a[@href='/logout/?t=1550846736%2C09865a11c32ef819fb524c408c8f36cc']"使用的是基于会话的定位器,该定位器在其他会话中将不起作用。

不需要使用文本和xpath,因为它会比CSS慢。