模拟情景: 打开百度网页,输入小米,进行搜索
#coding=utf-8
from selenium import webdriver
import time
import re
opt = webdriver.ChromeOptions() #创建浏览器
# opt.set_headless() #无窗口模式
driver = webdriver.Chrome(options=opt) #创建浏览器对象
driver.get('https://www.baidu.com/') #打开网页
# driver.maximize_window() #最大化窗口
time.sleep(2) #加载等待
driver.find_element_by_xpath("./*//span[@class='bg s_ipt_wr quickdelete-wrap']/input").send_keys("魅族") #利用xpath查找元素进行输入文本
# driver.find_element_by_id('kw').send_keys("小米") #候选方法
driver.find_element_by_xpath("//span[@class='bg s_btn_wr']/input").click()#点击按钮
# driver.find_element_by_xpath("//input[@value='百度一下']").click()#候选方法
# driver.find_element_by_xpath("//span[@class='bg s_btn_wr']/input[type='submit'][value='百度一下']").click()#候选方法,多条件匹配
运行即可,利用调试可看到每一步的运行情况
建议使用xpath来进行匹配元素,因为有的元素没填写id , name有重复的,所以用xpath更为精确
举例说明: 获取百度按钮
如下 可写为driver.find_element_by_xpath("//span[@class='bg s_btn_wr']/input")
// 表示的是不管前面多少级都匹配(包含一级),/ 是只匹配一级 ,@ 符号表示的是取元素的属性后面紧跟的=内容就是这个值
示例所表示的 就是匹配到这一级后的下一路径,也就是 [百度一下] 按钮的句柄, 再对其.click()点击即可
//span[@class='bg s_btn_wr']/input[type='submit'][value='百度一下'] 多条件匹配
以下为我的学习来源,感谢!
xpath: https://www.cnblogs.com/c-x-a/p/9195644.html
简单案例: https://ask.csdn.net/questions/697603
定位元素的8种方式: https://www.cnblogs.com/minieye/p/5803640.html
Selenium-Python中文文档: https://selenium-python-zh.readthedocs.io/en/latest/index.html