我有下面的代码
<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/