python /硒/元素不可点击

时间:2020-10-13 07:56:56

标签: python selenium

我刚刚开始学习python并尝试创建一个与网站进行一些交互的小项目,但是我有一个小问题,我自己无法解决。

我正在尝试在网站上找到一些东西。因此,我输入一些条件,然后按搜索按钮。如果我的搜索成功,则新信息会显示在网站上,我想按一下按钮,执行其他操作,然后返回搜索端。如果没有结果,我将返回搜索站点。

该代码在大多数情况下都可以正常工作,但是有时我会收到错误消息并中断代码。

#click search button
css = 'button.btn-standard:nth-child(2)'
iElement = browser.find_element_by_css_selector(css)
iElement.click()

#wait some time
t = random.uniform(0.190, 0.25)
time.sleep(t)
        
css = 'body > main > section > section > div.ut-navigation-container-view--content > div > div > section.ut-navigation-container-view.ui-layout-right > div > div > div.DetailPanel > div.bidOptions > button.btn-standard.buyButton.currency-coins'
try:            
  #Check if search is successful
  iElements = browser.find_element_by_css_selector(css)

  #Buy now for n coins
  iElement = browser.find_element_by_css_selector(css)
  iElement.click() # <- here is were the error occurs

  .... some other code that works...          
except NoSuchElementException:
  a = 1

#Go back
css = '.ut-navigation-button-control'
iElement = browser.find_element_by_css_selector(css)
iElement.click()

错误:ElementClickInterceptedException:消息:元素在点(972,569)不可点击,因为另一个元素将其遮盖了

我已经尝试过element_to_be_clickable,但无法处理。

有人可以帮助我解决我的问题吗?

2 个答案:

答案 0 :(得分:0)

元素与您的元素重叠,请尝试使用此元素。

driver.execute_script("arguments[0].click();",  iElement)

等待并单击它

iElement=WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, css)))

导入

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC

答案 1 :(得分:0)

因此,顾名思义,具有“ ut-click-shield”类的元素阻止了点击。您可以尝试以下操作:

a)在实际点击元素之前添加“等待元素可点击”:

iElement = WebDriverWait(browser, 20).until(expected_conditions.element_to_be_clickable((By.CSS, "myElement"))).click()

b)另一个选项是使用Actions Chain

ActionChains(browser).move_to_element((By.CSS, "myElement")).click().perform()

c)有关“元素不可点击”的不同原因的概述,请参见this discussion