selenium模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

在学习selenium模块的时候,由于是在白嫖的,往年教程

import time
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://www.csdn.net/")

driver.find_element_by_id('toolbar-search-input').send_keys('python')
driver.find_element_by_id('toolbar-search-button').click()

time.sleep(6)
driver.quit()

点击运行后报错

AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

'WebDriver'没有find_element_by_id这个方法

搜索出来的基本都是就这个方法进行讲解

在尝试方法中发现,finde_element这个方法有

点开配置文件,发现通过find换了写法,尝试用这种写法去写

import time
from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://www.csdn.net/")
driver.find_element(by=By.ID, value='toolbar-search-input').send_keys('python')

driver.find_element(by=By.ID, value='toolbar-search-button').click()

time.sleep(6)
driver.quit()

 又报NameError的错

 By没有定义,声明By模块,最后改良的代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get("https://www.csdn.net/")
driver.find_element(by=By.ID, value='toolbar-search-input').send_keys('python')

driver.find_element(by=By.ID, value='toolbar-search-button').click()

time.sleep(6)
driver.quit()

然后运行,成功运行

如果遇到找不到方法的情况,如果自己的版本是最新的版本,那么很有可能这种方法已经不用了

可以去查看一下官方的文档,或者直接查看配置文件,对自己的代码进行修改

driver.find_element(By.XPATH, '//*[@id="kw"]') 
# 根据xpath选择元素(万金油)
driver.find_element(By.CSS_SELECTOR, '#kw') 
# 根据css选择器选择元素
driver.find_element(By.NAME, 'wd') 
# 根据name属性值选择元素
driver.find_element(By.CLASS_NAME, 's_ipt') 
# 根据类名选择元素
driver.find_element(By.LINK_TEXT, 'hao123') 
# 根据链接文本选择元素
driver.find_element(By.PARTIAL_LINK_TEXT, 'hao') 
# 根据包含文本选择
driver.find_element(By.TAG_NAME, 'title') 
# 根据标签名选择
# 目标元素在当前html中是唯一标签或众多标签第一个时候使用
driver.find_element(By.ID, 'su') 
# 根据id选择

  • 115
    点赞
  • 256
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值