我正在使用Selenium进行测试。我要单击一个元素。该元素非常可点击且可见,但是碰巧该元素的中间点被遮盖,从而导致错误。
这是MCVE:
HTML代码(link to demo):
<style>
button {
width: 90vw;
height: 90vh;
position: fixed;
top: 5vh;
left: 5vw;
}
.cover {
background: grey;
opacity: 0.3;
width: 80vw;
height: 80vh;
position: fixed;
top: 10vh;
left: 10vw;
}
</style>
<button onclick="alert('hi');">
Click me!
</button>
<div class="cover">
I'm in the way!
</div>
Python硒代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("https://blissfulpreciouslanservers--five-nine.repl.co/")
button = driver.find_element_by_tag_name("button")
button.click()
结果:
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <button onclick="alert('hi');">...</button> is not clickable at point (451, 450). Other element would receive the click: <div class="cover">...</div>
这似乎对硒的限制相当可悲。该按钮是可单击的,但并非始终都是可单击的。我不想摆弄滚动和坐标。
关于该异常,通常有很多类似的问题,例如:
但是,问题从来没有专门针对仅被部分遮盖的元素,因此我没有设法为自己的问题找到合适的答案。其他问题的答案通常属于以下类别:
ActionChains(driver).move_to_element(button).click().perform()
。这无济于事,因为.move_to_element()
moves to the middle of the element。答案 0 :(得分:-1)
您是否尝试过将class
添加到按钮上,然后搜索课程?例如:
<button class="btn" onclick="alert('hi');">
Click me!
</button>
然后使用以下内容查找并单击该按钮:
driver.findElement(By.className("btn")).click();
类似于stack overflow的alecxe响应