当前位置:   article > 正文

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate elemen

nosuchelementexception: message: no such element: unable to locate element:

  1. # 实例化浏览器对象
  2. driver = webdriver.Chrome()
  3. # 打开浏览器,访问百度首页
  4. driver.get('https://www.baidu.com')
  5. # 展示效果
  6. sleep(1)
  7. # 实例化鼠标操作对象,绑定浏览器driver
  8. action = ActionChains(driver)
  9. # 定位元素
  10. element1 = driver.find_element_by_xpath('//*[text()="新闻"]')
  11. # 调用鼠标动作方法并执行
  12. # 单击新闻
  13. action.click(element1).perform()
  14. sleep(3)
  15. # 在新页面右击热点要闻
  16. element2 = driver.find_element_by_xpath('//*[text()="热点要闻"]')
  17. action.context_click(element2).perform()

以上代码报错selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate elemen

原因分析:点击新闻时打开了新的页面,想要在新的页面去右键,但是没有进行页面切换,所以元素定位失败.

解决方法:添加切换页面动作如下:

  1. # 打开百度,点击百度热搜
  2. driver.find_element_by_css_selector('#s-hotsearch-wrapper > div > a.hot-title > div').click()
  3. sleep(2)
  4. # selenium提供了获取句柄的方法.
  5. # 句柄:handle,是窗口的唯一标识
  6. print(driver.current_window_handle) # 获取当前窗口的handle
  7. print(driver.window_handles) # 获取全部窗口的handle,列表
  8. driver.switch_to.window(driver.window_handles[1]) # 切换至窗口,目标是handle列表下标为1的窗口,即页面的第二个窗口
  9. driver.find_element_by_xpath('//*[text()="热搜"]').click()
  10. sleep(2)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/82246
推荐阅读
相关标签
  

闽ICP备14008679号