问题描述:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
selenium直接进入csdn网址执行登陆,可以完成。
可是
selenium先进入百度在搜索并进入csdn却提示定位不到页面元素。定位代码没问题。
解决方案:
每个页面都有一个句柄,从百度跳转到csdn是句柄信息没有改变,加一句
num=driver.window_handles
print(num)
driver.switch_to_window(num[1])
即可。
代码如下,小白勿喷。
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get("https://www.baidu.com") #先进百度
sleep(2)
driver.find_element_by_id("kw").send_keys("csdn") #输入csdn
sleep(2)
driver.find_element_by_id("su").click() #点击搜索
sleep(2)
driver.find_element_by_class_name("favurl").click() #选择第一条查询结果
sleep(1)
num=driver.window_handles #获取所有页面句柄
print(num)
driver.switch_to_window(num[1]) #跳转到csdn页面
driver.find_element_by_css_selector("li.userinfo>a").click() #登陆
driver.find_element_by_css_selector("div.login-part>h3>a").click() #账号密码登陆
sleep(3)
driver.find_element_by_css_selector("input#username").send_keys("123456") #账号
sleep(3)
driver.find_element_by_css_selector("input#password").send_keys("123456") #密码
sleep(1)
driver.find_element_by_class_name("logging").click() #点击登陆