Selenium无法单击ElementClickInterceptedException Selenium按钮Python

时间:2020-06-26 10:42:39

标签: selenium selenium-webdriver

我正在写一个硒测试,单击页面上的特定按钮。页面上没有其他按钮,但似乎已被阻塞,因此代码无法找到它。

  • 我试图将页面最大化,希望它可以找到按钮,但无法做到

我的代码

 m <- matrix(rpois(630000, 5), nrow = 700, dimnames = list(y = 1:700, x = 1:900))
microbenchmark::microbenchmark(melt(m))
#> Unit: milliseconds
#>     expr     min       lq     mean  median      uq     max neval
#>  melt(m) 10.5401 13.45535 16.60985 14.1058 14.8661 79.3941   100

元素的复制

driver.maximize_window()

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='save' and @name='save'][@value='View Report']"))).click()

错误

selenium.common.exceptions.ElementClickInterceptedException:消息:元素单击被拦截:元素在点(1750,770)不可单击。其他元素将获得点击:... (会话信息:chrome = 83.0.4103.116)

1 个答案:

答案 0 :(得分:0)

我认为另一个元素可能与您的元素重叠,因此您应该等待该层的隐形性。该层可以是加载框架或其他任何东西。

WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.CSS_SELECTOR, "selector_for_ovelapped_layer")))

然后单击所需的元素

此外,您可以使用操作:

element = driver.find_element_by_xpath("//input[@id='save' and @name='save'][@value='View Report']")
webdriver.ActionChains(driver).move_to_element(element).click(element).perform()

您可以使用JSExecutor做到这一点:

element = driver.find_element_by_xpath("//input[@id='save' and @name='save'][@value='View Report']")
driver.execute_script("arguments[0].click();", element)