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)

你可能感兴趣的:(selenium,测试工具)