目录索引
- ==查找元素:==
查找方法:
单个元素查找:
多个元素查找:
- *代码演示:*
- ==元素交互操作:==
清空文字:
- ==推荐的变量名定义名称:==
- ==执行JavaScript :==
滚动页面方法:
- *滚动到底部:*
- *滚动到顶部:*
- *其他:*
查找元素:
核心语法:
find_element()
element中文释义是元素,也就是找元素的意思
查找方法:
这里只说明3.8以后版本的用法
- find_element(By.ID,"id名") 根据id属性来定位
- find_element(By.NAME,"name") 根据name元素来定位
- find_element(By.XPATH,"xpath语法") 根据xpath语法来定位,作者重点推荐这个方法
- find_element(By.TAG_NAME,"标签名") 根据标签名来定位
- find_element(By.CLASS_NAME,"类名") 根据class的名字来定位
- find_element(By.CSS_SELECTOR,"#id") 根据css选择器来定位
- find_element(By.LINK_TEXT,"text") 根据文本属性来定位,这个也比较推荐可以直接根据渲染后的界面直接定位
单个元素查找:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import time
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
#先定位搜索框
text_input1 = browser.find_element(By.XPATH,'//input[@id="kw"]')
text_input1.send_keys("美女")
text_input1.send_keys(Keys.ENTER)
time.sleep(2)
wait = WebDriverWait(browser,10)
wait.until(EC.presence_of_element_located((By.LINK_TEXT,"图片")))
browser.find_element(By.LINK_TEXT,"跳舞").click()
time.sleep(5)
browser.close()
这里要注意一个细节问题,就是名字叫做“图片”的元素跳转前后跳转后的界面都有这个元素,会造成跳转混乱。所以这个time.sleep放的位置就起到了重要的作用,当然你也可以在wait.until里面选取适当的元素,这里主要是故意使用的图片。
多个元素查找:
查找的方式是find_elements()
注意注意,这里多了个s,多个元素查找要加s
代码演示:
find_inputs = browser.find_elements(By.XPATH,"//div/a[@class='c-color-t c-line-clamp1 tags_2yHYj ']")
print(find_inputs)#以列表形式返回数据
#我们要通过循环遍历来提取数据
# find_inputs = browser.find_elements(By.XPATH,"//*[@id='2']/div/div/div[2]/div[1]/div[@class='toplist1-tr_4kE4D']")
print(type(find_inputs))
for i in find_inputs:
print(i)
呈现效果:
我们要查找的多元素框框
元素交互操作:
对获取的元素调用交互方法
清空文字:
"""
比如我在搜索框里输入美女的文字
然后又想把这个文字给删除该怎么做呢
"""
语法:
#text_input和button均为变量名
text_input.clear()#清空输入框
text_input.send_keys()#输入内容也可用于按下按键
browser.find_element()#单个查找元素
browser.find_elements()#多个查找元素
button.click()#单击
更多操作: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement
推荐的变量名定义名称:
- text_input:用于输入或者按键的变量名
- button:用于会按下的按键
- find_input:用于其他寻找的元素
执行JavaScript :
selenium只能操作页面内部的东西,有一些操作必须借助JS实现,比如说实现添加一个页面,比如说下拉滚动条。
滚动页面方法:
先记住两个即可:滚动到底部、滚动到顶部
execute_script()
execute中文释义:执行
script中文释义:脚本;剧本
滚动到底部:
window.scrollTo(0,document.body.scrollHeight)
滚动到顶部:
window.scrollTO(0,0)
其他:
说明:
window:js的window对象
scrollTo:window的方法,可以滚到页面的任何位置
scrollHeight:是dom元素的通用属性,document.body.scrollHeight会返回body元素的高度,基本上就是页面的高度
scrollLeft:获取位于对象左边界和窗口目前可见内容的最左端之间的距离
scrollTop:获取位于对象最顶端和窗口中课件内容的最顶端之间的距离
scrollWidth:获取对象滚动的宽度