# author:nly
# 时间:2022/6/7 14:34
from selenium import webdriver
from selenium.webdriver.common.by import By
# 打开浏览器
driver = webdriver.Chrome()
# 加载网页
driver.get("https://www.baidu.com")
"""
定位元素
1.通过id定位
driver.find_element(By.ID, "kw").send_keys("码尚学院")
2.通过name定位
driver.find_element(By.NAME, "wd").send_keys("码尚学院")
3.通过链接文字定位,只适用于a标签
driver.find_element(By.LINK_TEXT, "新闻").click()
4.通过部分链接文字定位,只适用于a标签
driver.find_element(By.PARTIAL_LINK_TEXT, "新").click()
5.通过XPATH定位
1)绝对路径:/开头的
2)相对路径://开头的
①相对路径+索引定位
//form/span[1]/input
driver.find_element(By.XPATH, "//form/span[1]/input").send_keys("码尚学院")
②相对路径+属性定位
//input[@autocomplete="off"]
driver.find_element(By.XPATH, "//input[@autocomplete='off']").send_keys("码尚学院")
③相对路径+通配符(*)
//*[@autocomplete="off"] 或者 //*[@*="off"]
driver.find_element(By.XPATH, "//*[@autocomplete='off']").send_keys("码尚学院")
driver.find_element(By.XPATH, "//*[@*='off']").send_keys("码尚学院")
④相对路径+部分属性值
以开头://input[starts-with(@autocomplete,"of")]
driver.find_element(By.XPATH, "//input[starts-with(@autocomplete, 'of')]").send_keys("码尚学院")
以结尾://input[substring(@autocomplete,2)="ff"]
driver.find_element(By.XPATH, "//input[substring(@autocomplete, 2)='ff']").send_keys("码尚学院")
包含://input[contains(@autocomplete,"of")]
driver.find_element(By.XPATH, "//input[contains(@autocomplete,'of')]").send_keys("码尚学院")
⑤相对路径+文本定位
//span[text()='按图片搜索']
value = driver.find_element(By.XPATH, "//span[text()='按图片搜索']").get_attribute("class")
print(value)
"""
"""
以上定位方式,基本可以定位所有元素。
还有一种,通过css定位,不常用
1.绝对路径(不用)
2.通过ID和class定位
3.通过属性定位
4.通过部分属性定位
5.查询子元素定位
6.查询兄弟节点定位
"""