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

# 实例化浏览器对象
driver = webdriver.Chrome()
# 打开浏览器,访问百度首页
driver.get('https://www.baidu.com')
# 展示效果
sleep(1)

# 实例化鼠标操作对象,绑定浏览器driver
action = ActionChains(driver)
# 定位元素
element1 = driver.find_element_by_xpath('//*[text()="新闻"]')
# 调用鼠标动作方法并执行
# 单击新闻
action.click(element1).perform()
sleep(3)

# 在新页面右击热点要闻
element2 = driver.find_element_by_xpath('//*[text()="热点要闻"]')
action.context_click(element2).perform()

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

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

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

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

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值