我正在写一个硒测试,单击页面上的特定按钮。页面上没有其他按钮,但似乎已被阻塞,因此代码无法找到它。
我的代码
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)
答案 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)