在进行某个弹窗的关闭操作时,报出了以下错误
element click intercepted — 元素点击被拦截
错误原因大概是因为这个按钮上面还有别的东西覆盖,所以点击不到
所以有两种方法:
方法1,调用ActionChains类模拟鼠标点击:
element = driver.find_element_by_css(‘div[class*=“loadingWhiteBox”]’)
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()
方法2,使用js点击:
element = driver.find_element_by_css(‘div[class*=“loadingWhiteBox”]’)
driver.execute_script(“arguments[0].click();”, element)
我在进行对一个APP使用selenium造数据时,碰到了以下情况:
一级业务有10个选项,但是页面上只能展示3个选项,其他选项需要上滑才能选择:
# 选择一级业务
driver.find_element(By.XPATH,'/html/body/div/div/div[2]/div/div[1]/form/div[1]/div[2]/div[2]/div/div/input').click()
choose1 = driver.find_elements(By.XPATH,'/html/body/div/div/div[5]/div/div[2]/div[1]/ul/li')
choose1[random.randint(0,len(choose1))].click()
driver.find_element(By.XPATH,'/html/body/div/div/div[5]/div/div[1]/button[2]').click()
这里随机选择前3个选项时不会报错,但是随机选择到后面的选项时就会报错,报错信息是元素不可点击,原因是选项在最后面,没有在页面上展示,所以点击不到,然后就用了以下方法解决:
# 选择一级业务
driver.find_element(By.XPATH,'/html/body/div/div/div[2]/div/div[1]/form/div[1]/div[2]/div[2]/div/div/input').click()
choose1 = driver.find_elements(By.XPATH,'/html/body/div/div/div[5]/div/div[2]/div[1]/ul/li')
a = int(random.randint(0,len(choose1)))
for i in range(a):
choose1[i].click()
driver.find_element(By.XPATH,'/html/body/div/div/div[5]/div/div[1]/button[2]').click()
直接从第一个元素遍历点击,一直点击到我想要点击的元素