如何在selenium模块中使用driver.find_element(by=By.ID, value=None)方法代替find_element_by_id方法

在学习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选择

物联沃分享整理
物联沃-IOTWORD物联网 » 如何在selenium模块中使用driver.find_element(by=By.ID, value=None)方法代替find_element_by_id方法

发表评论