Html Selenium如何点击屏幕上50%和屏幕上50%的元素?
有一个div元素。其大小的50%显示在屏幕上。另外50%超出屏幕高度,不可见。 不可能滚动 我尝试使用Selenium自动化测试,并单击该div元素,但有时它工作,有时不工作 为什么Selenium不点击该div的“屏幕区域”Html Selenium如何点击屏幕上50%和屏幕上50%的元素?,html,selenium,selenium-webdriver,dom,webdriver-w3c-spec,Html,Selenium,Selenium Webdriver,Dom,Webdriver W3c Spec,有一个div元素。其大小的50%显示在屏幕上。另外50%超出屏幕高度,不可见。 不可能滚动 我尝试使用Selenium自动化测试,并单击该div元素,但有时它工作,有时不工作 为什么Selenium不点击该div的“屏幕区域” 这个功能是如何实现的?当我告诉Selenium单击一个巨大的div元素时,它是否会单击该div上的一个随机位置?如果您是基于xpath、id和其他定位器进行单击,那么它会单击随机位置。但只要单击元素并执行该单击的结果操作,这并不重要 关于有时它工作或不工作,若你们检查了按
这个功能是如何实现的?当我告诉Selenium单击一个巨大的div元素时,它是否会单击该div上的一个随机位置?如果您是基于xpath、id和其他定位器进行单击,那么它会单击随机位置。但只要单击元素并执行该单击的结果操作,这并不重要 关于有时它工作或不工作,若你们检查了按钮被启用或点击,它将始终工作 图元在视图中的中心点 根据WebDriver W3C规范,元素的是矩形的原点位置,该矩形是元素的第一个客户端矩形和初始矩形之间的交点 给定已知在视图中的元素,可以通过以下方式进行计算:
元素单击 根据文档,如果元素还不可与指针交互,则该命令将滚动到该元素的视图中,并单击其视图中心点 注意:如果元素的中心点被另一个元素遮挡,则返回一个元素点击截获错误。如果元素在视口之外,则返回“元素不可交互”错误
解决方案 在这种情况下,有两种可能的解决方案:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click()
ActionChains(driver).move_to_element(element).click(element).perform()
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click()
ActionChains(driver).move_to_element(element).click(element).perform()
参考文献 您可以在Oh,
button.click()和this.driver.actions()中找到相关的讨论。单击(按钮)。执行()代码>似乎工作方式不同。click()似乎一直在工作,但通过驱动程序操作,它经常失败。