Selenium错误:元素在点(X,Y)处不可点击,其他元素将接收点击

时间:2016-07-28 07:53:13

标签: python selenium

我正在使用python和selenium。在this链接上,我会点击Reply添加评论

  

元素在点上无法点击(933.9500122070312,   16.666671752929688)。其他元素会收到点击:<a href="/create_account"></a>

此处给出的代码:

导入请求 来自bs4进口BeautifulSoup 来自gensim.summarization导入总结

来自selenium import webdriver

from datetime import datetime
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from time import sleep     
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

    driver.get(url)
    sleep(4)
    f = driver.find_element_by_css_selector('.PostFull__reply')
    f.location_once_scrolled_into_view
    f.click()

更新

这是它在Inspector中的显示方式:

enter image description here

2 个答案:

答案 0 :(得分:2)

你的css是正确的,长内容的问题是它将元素滚动到.Header的下方,为什么它不能单击该元素。

您可以获取元素的位置并滚动到小于Y坐标的100px,因为.Header的高度为49.5px,最好在测试前最大化窗口。见下文:

driver.maximize_window()
f = driver.find_element_by_css_selector('.PostFull__reply')
location = f.location["y"] - 100
driver.execute_script("window.scrollTo(0, %d);" %location)
f.click()

答案 1 :(得分:0)

您试图点击span元素,而实际上它应该是a元素。在这里,您应该尝试使用a找到WebDriverWait元素,等待元素可见并在DOM上点击,然后执行点击,如下所示: -

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

driver.get(url)

f = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".PostFull__reply > a")))
f.location_once_scrolled_into_view
f.click() 

如果遗憾的是f.click()无效,您还可以使用execute_script()执行点击操作,如下所示: -

driver.execute_script('arguments[0].click()', f)

希望它有效.. :)