1.首先下载个Google chrome 或者Firefox
2.再下载个对应版本驱动http://chromedriver.storage.googleapis.com/index.html
- Chrome驱动文件下载:点击下载chromedrive
- Firefox驱动文件下载:点解下载geckodriver
3.然后往PyCharm 上装个插件
最后把对应版本驱动解压后放到项目中
,,,,,,,,,,,,,,,,,,,,,,,,,,接下来步入正题
定位元素的8种方式
定位一个元素 | 定位多个元素 | 含义 |
---|---|---|
find_element_by_id | find_elements_by_id | 通过元素id定位 |
find_element_by_name | find_elements_by_name | 通过元素name定位 |
find_element_by_xpath | find_elements_by_xpath | 通过xpath表达式定位 |
find_element_by_link_text | find_elements_by_link_tex | 通过完整超链接定位 |
find_element_by_partial_link_text | find_elements_by_partial_link_text | 通过部分链接定位 |
find_element_by_tag_name | find_elements_by_tag_name | 通过标签定位 |
find_element_by_class_name | find_elements_by_class_name | 通过类名进行定位 |
find_elements_by_css_selector | find_elements_by_css_selector | 通过css选择器进行定位 |
进入实战
打开一个Web页面,按下F12
#导包
from selenium import webdriver
dr=webdriver.Chrome()
dr.get("https://www.baidu.com/")
- 通过id定位:dr.find_element_by_id("kw"),,,,,,定位到元素后可以通过比如:dr.find_element_by_id("kw").send_keys("往输入框输入内容")
- 通过name定位:dr.find_element_by_name("wd"),,,,,,定位到元素后可以通过比如:dr.find_element_by_name("wd").click() 来做点击事件
- 通过class name定位:dr.find_element_by_class_name("s_ipt")
- 通过tag name定位:dr.find_element_by_tag_name("input")
- 通过xpath定位,xpath定位有N种写法,这里列几个常用写法:
dr.find_element_by_xpath("//*[@id='kw']")
dr.find_element_by_xpath("//*[@name='wd']")
dr.find_element_by_xpath("//input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("//span[@class='soutu-btn']/input")
dr.find_element_by_xpath("//form[@id='form']/span/input")
dr.find_element_by_xpath("//input[@id='kw' and @name='wd']")
右键标签找到Copy就可以复制XPath了
- 通过css定位,css定位有N种写法,这里列几个常用写法:
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
如果是页面上的文本超链接的话
- 通过link text定位:
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.find_element_by_partial_link_text("123")