问题一:运行以下代码,报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".btn self-btn bg s_btn"}
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element_by_class_name('btn self-btn bg s_btn').send_keys('test')
driver.find_element_by_class_name('btn self-btn bg s_btn').click()
time.sleep(5)
driver.quit()
一、原因:利用class元素进行定位时,如果元素属性值中间有空格,要将空格和空格前部分的值删除
解决:
driver.find_element_by_class_name('s_btn').send_keys('test')
driver.find_element_by_class_name('s_btn').click()
再次运行代码 done
二、原因:可能打开了多个窗口
解决:
//查看目前打开的窗口,并切换
list_windows = driver.window_handles
driver.switch_to.window(list_windows[1])
三、原因:页面还未加载完成
解决:
time.sleep(5)
问题二:运行以下代码时,报错:selenium.common.exceptions.WebDriverException: Message: unknown Error: cannot find Chrome binary
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
tmp= driver.find_element_by_tag_name('input')
print(tmp)
tmplist= driver.find_elements_by_tag_name('input')
print(tmplist)
time.sleep(5)
driver.quit()
原因:chromedriver.exe驱动有问题(版本/ 路径)
解决:
第一种方案:在代码直接自定义目录
from selenium import webdriver
import time
driver= webDriver.Chrome(r'F:\python36\chromedriver.exe')
driver.get('http://www.baidu.com')
第二种方案:添加chromedriver.exe到系统的环境变量
路径:控制面板->系统->高级系统设置->环境变量->系统变量
操作:PATH->编辑->新建:输入驱动的绝对路径如:F:\python36\chromedriver.exe->确定
再次运行代码 done