一、元素操作
1、点击
element.click()
2、获取元素名称
element.tag_name
from selenium import webdriver
import logging
import time
logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度输入框,输入柠檬班
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
target_name = ele.tag_name
print("标签名称:", target_name) # 标签名称: input
3、获取元素文本内容
element.text
from selenium import webdriver
import logging
import time
logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到按图片搜索
ele = driver.find_element_by_xpath('//span[text()="关注冰雪赛事 一起向未来"]')
text = ele.text
print("文本内容是:",text) # 文本内容是: 关注冰雪赛事 一起向未来
ele.click()
time.sleep(3)
driver.quit()
4、清空输入框
element.clear()
from selenium import webdriver
import logging
import time
logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度输入框,输入柠檬班
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
time.sleep(4)
# 清空操作,有默认值时,先清空默认值
ele.clear()
time.sleep(3)
driver.quit()
5、获取元素属性值
element.get_attribute(name=‘type’)
from selenium import webdriver
import logging
import time
logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度输入框
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val) #百度一下
ele2.click()
time.sleep(3)
driver.quit()
二、元素等待
1、元素等待分类
1、强制等待
2、显示等待
3、隐式等待
1、强制等待
使用time.sleep(5)
2、隐式等待
driver.implicitly_wait(2)
特点:
(1)整个会话只执行一次,但对所有的元素都生效,既所有的元素都会执行元素等待
(2)等待时间以秒为单位
(3)超过元素等待时间,如果元素未出现,那就会定位失败
from selenium import webdriver
import time
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 隐式等待
driver.implicitly_wait(2)
# 找到百度输入框
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val) #百度一下
ele2.click()
time.sleep(3)
driver.quit()
3、显示等待
1、在timeout设置的时间内,然后根据poll_frequency设置的时间进去查询元素是否【可见、存在】
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait类参数:
1、driver:浏览器驱动
2、timeout:元素等待的超时时间(秒),10
3、poll_frequency=POLL_FREQUENCY:轮询周期,默认是0.5秒,1
4、ignored_exceptions:超时后抛出的异常信息,no such element exception
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 显示等待
locator = (By.ID, "kw")
wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=1)
# 找到百度输入框
ele = wait.until(EC.visibility_of_element_located(locator=locator))
# ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val) # 百度一下
ele2.click()
time.sleep(3)
driver.quit()
显示等待使用:
使用
1、分开写
#元素定位表达式
locator = (By.ID,"kw")
#实例化
wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=1)
#元素定位
ele = wait.until(EC.visibility_of_element_located(locator=locator))
#等待多个元素可见
EC.visibility_of_all_elements_located(locator=locator)
2、组合写
ele = WebDriverWait(driver=driver, timeout=10, poll_frequency=1).until(EC.visibility_of_element_located(locator=locator))
三、By类使用
from selenium.webdriver.common.by import By
ele = driver.find_element_by_id("kw")
ele = driver.find_element(By.ID,"kw")
两种写法一样
locator = (By.Xpath,"//body//a")
locator = ("xpath","//body//a")