随笔1:关于元素定位只能使用driver.find_element()这件事

1、首先看第2点的截图driver.find_element_by_id 直接标黄报错了,但还是先执行下

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()

driver.find_element_by_id('kw').send_keys("自动化")
driver.find_element_by_name('wd').click()

2、可以发现虽然驱动打开了浏览器,但是在定位元素的时候报错了,提示:AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'

 3、要解决这个问题其实可以引入一个包

from selenium.webdriver.common.by import By

4、定位元素的格式直接可以用driver.find_element()

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

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()

driver.find_element(by=By.ID,value="kw").send_keys("自动化")
driver.find_element(by=By.ID,value="su").click()

再次执行可以看到成功定位到元素并执行操作

 注:如果你看by.py源码,可以看到下面8种类型:

 

5、遇到提示只能用find_element()格式的话,可以通过这个方法去解决,只需要根据自己对应需要定位的元素信息进行变更by=By."*",value="*"

当然解决办法肯定还有很多,兄弟们也可以去尝试其他方法

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注