赞
踩
- # 实例化浏览器对象
- 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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。