java - 如何在 Selenium Java Web 驱动程序中选择以下元素?

标签 java selenium selenium-webdriver automation selenium-chromedriver

我有下面的代码

<button class="jobs-search-box__submit-button artdeco-button artdeco-button--3 ml2" data-ember-action="" data-ember-action-689="689">Search</button>

我想在selenium中找到这个元素并执行点击操作。我尝试了几个选项,例如按类、xpath、名称、文本、包含,但没有任何效果。 有人可以指导我吗?

driver.findElement(By.xpath("//button[contains(.,'Search']")).click();
driver.findElement(By.className("jobs-search-box__submit-button artdeco-button artdeco-button--3 ml2")).click();
driver.findElement(By.className("//*[@id=\"ember689\"]/button")).click();
driver.findElement(By.linkText("Search")).click();

最佳答案

总结评论中的内容。每个定位器都有问题。

By.xpath("//button[contains(.,'Search']")

缺少括号,需要:

By.xpath("//button[contains(.,'Search')]")

同时,因为 By.className 需要单个 className

By.className("jobs-search-box__submit-button artdeco-button artdeco-button--3 ml2")

也不起作用。 (参见github.com/seleniumhq/selenium/issues/1480 但可以作为:

By.cssSelector(".jobs-search-box__submit-button.artdeco-button.artdeco-button--3.ml2") 

还有

By.className("//*[@id=\"ember689\"]/button")

指的是未提供的ID(另外,我不确定,但我认为需要通过xpath)。

By.linkText("Search")

不起作用,因为没有标签a,因此没有超链接。

在 Protractor 中,这要简单得多,因为您只需说 by.buttonText('Search')

关于java - 如何在 Selenium Java Web 驱动程序中选择以下元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981041/

相关文章:

java - 如果括号具有更高的优先级,那么为什么首先解决增量运算符?

java - JAX-WS SOAP 返回类型

javascript - 如何使用selenium IDE从网页中的一组链接中随机选择并单击一个链接?

java - 强制 Jenkins 返回稳定版本?

Python循环打开多个显示窗口

java - 具有包含/排除属性的 JSONView 注释

java - Spark - 将RDD保存到多个文件作为输出

python - Scrapy/BeautifulSoup 模拟 'clicking' 一个按钮以加载网站的一部分

java - 将包含 selenium 命令的 java 代码转换为 groovy,以便在 Katalon 上以脚本模式插入

java - 如何使用 selenium webDriver 列出 <tr> 标记内的所有 <td>