我正在使用python和selenium。在this链接上,我会点击Reply
添加评论
元素在点上无法点击(933.9500122070312, 16.666671752929688)。其他元素会收到点击:
<a href="/create_account"></a>
此处给出的代码:
导入请求 来自bs4进口BeautifulSoup 来自gensim.summarization导入总结
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中的显示方式:
答案 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)
希望它有效.. :)