Python 硒罐';不要单击图元,因为其他图元会将其遮挡
设置 我使用Python3.x和Selenium填写一个查询字段,然后单击搜索按钮Python 硒罐';不要单击图元,因为其他图元会将其遮挡,python,selenium,element,Python,Selenium,Element,设置 我使用Python3.x和Selenium填写一个查询字段,然后单击搜索按钮 # element containing the product search bar and buttons search_area = el_id('Products').find_element_by_class_name('searchArea') # insert name of file to be duplicated name_field = search_area.find_element_b
# element containing the product search bar and buttons
search_area = el_id('Products').find_element_by_class_name('searchArea')
# insert name of file to be duplicated
name_field = search_area.find_element_by_xpath("//input[@type='text']")
name_field.clear()
name_field.send_keys('to_be_duplicated')
# click search button
search_area.find_element_by_xpath('span/a[1]').click()
其中el\u id(x)=浏览器。通过\u id(x)查找\u元素。
问题 执行上面的代码会产生以下错误
ElementClickInterceptedException: Element <a class="button button-fleft searchButton" href="#"> is not clickable at point (577.6166763305664,225.06666564941406) because another element <div class="blockUI blockOverlay"> obscures it
但是我用不同的方法解决它,所以我遵循并做了下面的事情
# click search button
search_button = search_area.find_element_by_xpath('span/a[1]')
WebDriverWait(driver, 10).until_not(EC.visibility_of_element_located((By.XPATH,
"//*[@id="Products"]/tbody/tr[1]/td/div/input")))
search_button.click()
但我也犯了同样的错误
我也试过了,但同样的错误
如何解决这个问题?有几种方法可以做到这一点,其中一种方法是使用Javascript executor 你可以说:
element = driver.find_element_by_xpath("//div[@class='blockUI blockOverlay']")
driver.execute_script("arguments[0].style.visibility='hidden'", element)
这样,您就可以使用class='blockUI blockOverlay'
如果我是正确的,您的元素可以被单击。根据的第5条,我通过暗示代码在尝试单击之前等待临时覆盖消失来解决它
wait.until(EC.invisibility_of_element_located((By.XPATH,
"//div[@class='blockUI blockOverlay']")))
el_xp("//input[@value='Save']").click()
此外,您还可以尝试通过
JavaScript
单击元素,如下所示:
#包含产品搜索栏和按钮的元素
search\u area=el\u id(“产品”)。按类名称(“searchArea”)查找元素
#通过执行javascript单击元素
驱动程序。执行_脚本(“参数[0]。单击();”,搜索_区域)
请提供一份可能的感谢DebanjanB!最后,5号车成功了<代码>等待.直到(位于((By.XPATH,//div[@class='blockUI blockOverlay']])的元素的EC.invisibility\u然后el\u xp(//input[@value='Save'])。单击()
。如何检测临时覆盖的XPATH?我试图在Chrome开发工具上检测它,但由于它很快消失,我无法知道xpath。我试过了。等待它消失。它结束时说它已经消失了,但我在尝试单击时仍然出现了错误。在我的情况下,它工作正常,我认为由于元素中的call click()会使用(x,y)位置执行类似于“虚拟单击”的操作,但是使用call click()使用execute_脚本会直接调用该元素的脚本
wait.until(EC.invisibility_of_element_located((By.XPATH,
"//div[@class='blockUI blockOverlay']")))
el_xp("//input[@value='Save']").click()