在硒铬驱动程序中单击按钮不可见元素

时间:2019-07-16 23:30:06

标签: selenium-webdriver exception button visible

我正在填写此网页上的字段后尝试单击“继续”按钮。但是抛出一个例外,说即使我将屏幕最大化也可以看到该元素,并且您可以清楚地看到该按钮。

即使等待10秒,我也尝试了以下方法:

driver.findElement(By.xpath("//*[@id=\"submitButton\"]/span")).click();
driver.findElement(By.cssSelector("#submitButton > span")).click();
driver.findElement(By.partialLinkText("Continue")).click();
driver.findElement(By.className("caret_rebrand")).click();
driver.findElement(By.name("submitButton")).click();

driver.findElement(By.xpath("//span[contains(@class,'red') and contains(text(), 'Continue')]")).click();

这是我尝试访问的html的一部分:

<button style="padding-left: 0px;" type=button" "id=submitButton" class = "nbutton" title = "Continue" onclick=_hblicnk('continue,'continue'); goFeaturePage('true');">
 <span style = "padding-right: 12px;" class="red"
      "Continue"
      <img class="caret_rebrand">
 </span>

我希望找到并单击继续按钮。 attached is the picture of the webpage

1 个答案:

答案 0 :(得分:0)

  1. 我的期望是您需要单击<button>元素,因为此<span>可能根本无法单击。您可以使用title属性来唯一标识页面上的元素
  2. 最好使用Explicit Wait来确保按钮存在且可单击,因为在DOM中可能无法立即使用按钮。查看How to use Selenium to test web applications using AJAX technology文章以了解更多详细信息
  3. 假设以上所有内容,我相信您应该可以使用下面的代码单击该按钮:

    continue_button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@title='Continue']")))
    continue_button.click()