单击在 Chrome 中工作但在 IE11 中不工作的 xpath 找到的按钮

Clicking a button found with xpath working in Chrome but not in IE11

我想点击一个按钮(发送表格)

<button class="form-button primary">Click here</button>

我找到这样的元素:

driver.findElement(By.xpath("//button[contains(text(),'Click here')]")).click;

在 chorme 上正在工作并发送表单,但在 IE11 中没有(发送表单)。 明确地说,在 IE 中是查找元素(或一个元素)。但可能不是正确的元素。

添加信息:

硒 version:3.14 IE 网络驱动程序:3.14

有几种不同的方法可以使用 selenium 单击某些内容。我会尝试使用 javascript 点击或操作点击。

Javascript点击:

WebElement element = driver.findElement(By.xpath("//button[contains(text(),'Click here')]"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

点击操作:

Actions action = new Actions(driver);
WebElement element = driver.findElement(By.xpath("//button[contains(text(),'Click here')]"));
action.moveToElement(element).click().build().perform();

也有可能是您在执行点击时出现在了错误的框架中。

driver.switchTo.frame("Frame_ID");

您可以在检查网页时找到框架 ID。

如果您的用例是调用 click(),您必须为 elementToBeClickable() 引入 WebDriverWait,并且您可以使用以下任一方法 :

  • xpath 使用 classNametext:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='form-button primary' and text()='Click here']"))).click();
    
  • xpath 使用 text:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[text()='Click here']"))).click();
    
  • xpath 使用 contains():

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(., 'Click here')]"))).click();