(1)通过pip install selenium安装selenium
(2.1)下载Chrome浏览器及对应版本的ChromeDriver(ChromeDriver淘宝镜像站)
ChromeDriver放置的位置:
①放置在Python的安装目录(例如:C:\Program Files\Python)
②随意放置,但需要在初始化Chrome浏览器对象时通过executable_path参数传入ChromeDriver的路径
(2.2)下载Edge浏览器及对应版本的EdgeDriver(EdgeDriver下载)
EdgeDriver放置的位置:
①放置在Python的安装目录(例如:C:\Program Files\Python)
②随意放置,但需要在初始化Edge浏览器对象时通过executable_path参数传入EdgeDriver的路径
(3)导入webdriver
[Python] 纯文本查看 复制代码 from selenium import webdriver
(4)初始化一个Edge浏览器对象(下面以Edge浏览器为例,Chrome浏览器同样的操作)
[Python] 纯文本查看 复制代码 driver = webdriver.Edge()
(5)浏览器窗口全屏显示
[Python] 纯文本查看 复制代码 driver.maximize_window()
上面初始化Chrome浏览器对象时系统自动打开的Chrome浏览器并没有全屏显示,我们可以使用driver.maximize_window()来全屏显示
(6)通过初始化的浏览器访问网站(以本网站为例)
[Python] 纯文本查看 复制代码 driver.get('https://www.ltxit.com')
(7.1)元素定位之id
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.ID,'mu')
id是进行身份识别的唯一标志,通过id找到的元素一定只有一个(唯一性),所以通过id定位非常准确,但是通过id定位存在缺陷
通过id定位的缺陷:在当前网页id是唯一的,但id是动态生成的(如果重新加载网页可能就没有该id或者该id对应的不再是原来的元素),一般情况下如果id后面带有数字,就不建议使用id进行元素定位
(7.2)元素定位之name
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.NAME,'mu')
(7.3)元素定位之class_name
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.CLASS_NAME,'mu')
(7.4)元素定位之tag_name
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.TAG_NAME,'mu')
(7.5)元素定位之partial_link_text(部分匹配超链接的文本定位)
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.PARTIAL_LINK_TEXT,'mu')
(7.6)元素定位之link_text(完全匹配超链接的文本定位)
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.LINK_TEXT,'mu')
(7.7)元素定位之css_selector(组合定位)
[Python] 纯文本查看 复制代码 ltxit = driver.find_element(By.CSS_SELECTOR,"[id = 'mu'][name = 'mu']")
(8)获取元素的属性
(9)获取网页中元素的XPath
①将鼠标放到该元素
②单击鼠标右键,然后依次选择“复制”--“复制完整的XPath”
(10)通过XPath定位元素
①通过F12打开浏览器的开发者模式
②使用键盘的“Ctrl+F”组合键打开输入框
③在输入框中输入XPath表达式
④若通过XPath表达式可定位到元素则相应的元素会加上黄色的底色
(11)XPath表达式详解
①“/”表示绝对路径,“//”表示相对路径(因为相对路径相对绝对路径要方便些且容错性好,所以在元素定位时优先选用相对路径)
②“@”表示是一个属性
③若一个表达式还不足以定位一个元素可以使用组合多个属性进行定位,直至定位到唯一的元素
组合定位表达式如下:
[Plain Text] 纯文本查看 复制代码 //*[@id = 'pt' and @class = 'bm cl'] 或 //*[@id = 'pt'][@class = 'bm cl']
④若所有的属性都用完了仍然不能定位到唯一的元素,可以使用父级的属性继续定位,若父级所有的属性都用完了还是不能定位到唯一元素,就使用父级的父级的属性定位...以此类推,直至直至定位到唯一的元素
若中间部分无法准确定位,可以直接使用相对路径的//来缩短XPath
⑤若需要定位的元素有文本,可以使用“contains(text(),'xxxx')”来协助定位(支持模糊匹配)
[Plain Text] 纯文本查看 复制代码 //a[contains(text(),'Windows常见问题解决方案')]
|