1. 定位元素
- find_element_by_id:根据id查找某个元素
submitTag = driver.find_element_by_id('su')
submitTag1 = driver.find_element(By.ID,'su')
- find_element_by_class_name:根据类名查找某个元素
submitTag = driver.find_element_by_class_name('su')
submitTag1 = driver.find_element(By.CLASS_NAME,'su')
- find_element_by_name:通过name属性值来查找元素
submitTag = driver.find_element_by_name('email')
submitTag1 = driver.find_element(By.NAME,'email')
- find_element_by_tag_name:通过标签属性名查找元素
submitTag = driver.find_element_by_tag_name('div')
submitTag1 = driver.find_element(By.TAG_NAME,'div')
- find_element_by_xpath:通过xpath语法来获取元素
submitTag = driver.find_element_by_xpath('//div')
submitTag1 = driver.find_element(By.XPATH,'//div')
- find_element是获取第一个满足条件的元素,find_elements是获取所有满足条件的元素
2. 操作表单元素
操作输入框分2步:第一步找到这个元素,第二步使用send_keys(value),将数据填充进去
- 使用clear方法可以清除输入框的内容:inputTag.clear()
- 操作checkbox标签,要想选中checkbox标签,需要选中标签,点击click()事件
rememberTag = driver.find_element_by_name("rememberMe")
rememberTag.click()
# 操作按钮
inputTag = driver.find_element_by_id('su')
inputTag.click()
# 选择select
select = seleum.webdriver.support.ui.Select
3. 行为链
actions = ActionChains(driver)
actions.move_to_element(inputTag)
actions.send_keys_to_element(inputTag, 'Python')
actions.move_to_element(submitTag)
actions.context_click()
actions.click(submitTag)
actions.perform()
# click_and_hold(element):点击但不松开鼠标
# context_click(element):右键单击
# double.click(element):双击
4. Selenium页面等待
4.1 Cookie操作
- 获取所有的cookie: cookies = driver.get_cookies()
- 根据cookie的name来获取cookie: value = driver.get_cookie(key)
- 删除某个cookie: driver.delete_cookie(‘key’)
4.2 页面等待
- NullPointer的异常方法:为了解决这个问题。所以 Selenium 提供了两种等待⽅式:⼀种是隐式等待、⼀种是显式等待。
- 隐式等待:调用driver.implicitly_wait,获取不可用元素之前等待10秒:driver.implicitly_wait(10)
- 显示等待
from selenium import webdriver
from selenium.webdriver.commom.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://baidu.com/")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
# presence_of_element_located:某个元素已经加载完毕了
# presence_of_all_elements_located:网页中满足条件的元素加载完毕
# element_to_be_clickable:某个元素可以点击了
5. 打开多窗口和切换页面
- switch_to_window来进⾏切换,具体切换到哪个⻚⾯,可以从driver.window_handles中找到
# 打开新页面
driver.execute_script("window.open('url')")
print(driver.current_url)
# 切换到新页面中
driver.switch_to_window(self.driver.window_handleles[1])