python 元素定位遇到的问题

本文解析了在使用Selenium进行网页自动化时遇到的两类问题:一是class名包含空格导致的定位错误,解决方法是修正class名;二是WebDriverException:Chrome binary未找到,可能是chromedriver的问题,提供了自定义路径和设置环境变量两种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题一:运行以下代码,报错: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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值