已解决。selenium自动化定位元素,点击按钮,异常报错

@Author:xiaozhu_sai
Date:2020/12/15

  • 发生异常: NoSuchElementException
    Message: no such element: Unable to locate element:
  • 发生异常: ElementNotInteractableException Message: element not interactable
  • 发生异常: ElementClickInterceptedException
    Message: element click intercepted: Element
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
#使用xpath定位一个输入框。异常1
_browser.find_element_by_xpath('//*[@id="edit_body"]/div[2]/div[1]/form/input[2]').send_keys('xx')
#定位一个登陆按钮,点击。异常2
_browser.find_element_by_name('0MKKey').click()
#点击登录按钮。异常3
_browser.find_element_by_css_selector('input[value^="登"]').click()

异常原因:使用xpath定位元素抛出异常的原因是因为目标网页有两个form和相同的“form、name,tag_name”等完全一样的属性,且使用不同的端口或者不同的接管方式会导致两个form的顺序不一样(一会在前一会在后),导致xpath定位失效。很明显,使用name定位元素同样失败,而且两个form的元素属性绝大部分都相同,建议各位朋友在使用非ID的方式定位元素时,先在f12中检索以保证正确定位。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我搜索了全网的解决方案,大部分都是在说此报错是因为没有加载元素,但是添加了显示&隐式等待后仍然无法解决。

解决方案:

#输入框的定位,异常1的解决
_browser.find_element_by_name('f3').find_element_by_name('DDDDD').send_keys(user)
#按钮的定位,异常2和3的解决
button1 = _browser.find_element_by_css_selector('input[value^="登"]')
_browser.execute_script("arguments[0].click();",button1)

猜你喜欢

转载自blog.csdn.net/weixin_42375356/article/details/111244316