Element is not clickable at point-----问题记录

在写ui自动化用例时,遇见了一个问题,点击元素报错Element is not clickable at point,网上的常见处理方法有以下四种:

  • 1.未加载完整:

    等待元素加载完整,使用time.sleep或

    WebDriverWait(self.driver, secs, 1).until(EC.element_to_be_clickable((By.xx, value))),优先显式等待,后者

  • 2.元素在iframe内,需要切换ifram
  • 3.不在视窗里,需要拉滚动条
  • 4.要点击的元素需要鼠标连贯操作才能点击:

    ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

 

排查了上述问题,均没有解决,后发现a用例和B用例都是添加,每次都是a成功,b不成功,是因为a执行完,点击确定之后,这个弹出框关闭的js还没执行完,b用例就去点添加了,所以待点击的按钮被一个提示添加成功的弹出层遮盖了,但

已经执行了WebDriverWait(self.driver, secs, 1).until(EC.element_to_be_clickable((By.LINK_TEXT, value))) ,所以忽略了本身被遮盖的可能
最终,在点击按钮之前,调用了刷新方法,页面刷新,弹出层关闭,成功解决问题,猜测通过js更改弹出层的display=none,也可以解决问题(面试时讨论过这个问题,三种解决办法,面试官倾向于time.sleep,前端测试不应该修改页面元素)

def add_click(self):
  self.pyse.F5()
  css='css=>[class="addBtn"]'
  self.pyse.element_wait(css)
  self.pyse.click(css)

问题解决后,搜索到网上有这个方法来解决被覆盖的问题:

用Enter代替click:

from selenium.webdriver.common.keys import Keys

driver.find_element_by_css_selector("div.loginForm>input#loginBtn").send_keys(Keys.ENTER)

 

转载于:https://www.cnblogs.com/luoyc/p/10578933.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值