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



好吧,我有以下代码

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

我想在硒中找到这个元素并执行点击操作。我尝试了几个选项,例如按类,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 需要单个类名

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,因此没有超链接。

在量角器中,这要简单得多,因为您只会说by.buttonText('Search')

你可以通过使用javascript来实现同样的事情。 请找到下面的代码示例:

//Creating the JavascriptExecutor interface object by Typecasting       
JavascriptExecutor js = (JavascriptExecutor)driver;
WebElement button =driver.findElement(By.xpath("//button[@class='jobs-search-box__submit-button artdeco-button artdeco-button--3 ml2']"));
//Perform Click on LOGIN button using JavascriptExecutor        
js.executeScript("arguments[0].click();", button);

我希望它能适用于您的案件。

注意:确保您的元素是静态的。

正确的 XPath 定位器是:

//button[text()='Search']

如果使用上述查询无法找到它,请确保:

  1. 按钮不属于和<iframe>,如果是这种情况 - 您必须使用 switchTo(( 函数更改上下文
  2. 该元素存在于 DOM 中,即页面已完全加载。最好对元素位置/交互使用显式等待,例如:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[text()='Search']")));
    

详细信息:如何使用 Selenium 使用 AJAX 技术测试 Web 应用程序

尝试 这两个希望它有效,

1.( 使用包含

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(text(),'Search')]")));

2.( 使用 CSS

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.jobs-search-box__submit-button artdeco-button artdeco-button--3 ml2")));
WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.contains('Search')")));

如果不起作用,请告诉我,我将提供另一种解决方案。

相关内容

  • 没有找到相关文章

最新更新