selenium操作
定位元素
-
find_element与find_elements区别
- element获取第一个
- elements获取全部并返回列表
-
根据id定位,传入tag中的id值
- driver.find_element_by_id()
-
根据name定位,传入tag中的name值
- driver.find_element_by_name()
-
根据class name定位,传入tag中的class值
- driver.find_element_by_class_name()
-
使用xpath定位,根据文档树xpath路径
- driver.find_element_by_xpath()
-
根据tag定位,传入tag名称
- driver.find_element_by_tag_name()
-
使用find_element()
导入包 from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'kw')
class By(object): """ Set of supported locator strategies. """ ID = "id" XPATH = "xpath" LINK_TEXT = "link text" PARTIAL_LINK_TEXT = "partial link text" NAME = "name" TAG_NAME = "tag name" CLASS_NAME = "class name" CSS_SELECTOR = "css selector"
表单操作
- 传入数据使用---- .send_keys()
- input标签
- 清除数据---- .clear()
- checkbox点击---- .click()
- 按钮使用--.click()
下拉菜单操作
- select标签
- 导入包 from selenium.webdriver.support.ui import Select
- 包裹定位元素 selectTag = Select(driver.find_element...)
- 选择操作
- selectTag.select_by_value(),传入值
- selectTagselect_by_index(),传入索引
- 无select标签
- 定位 nameTag = driver.find_element....
- 逻辑选择
- key == num
- driver.find_element...('xpath路径').click()
行为链
- 鼠标
- 导入包 from selenium.webdriver.common.action_chains import ActionChains
- 定位 inputTag = driver.find_element_by_id('kw')
- 实例对象 actions =ActionChains(driver)
- 鼠标点击 actions.move_to_element(inputTag)
- 输入内容 actions.send_keys_to_element(inputTag, '中国')
- 提交行为链 actions.perform()
cookie操作
- 获取所有cookie
- cookies = driver.get_cookies()
- 根据cookie名获取cookie
- cookie = driver.get_cookie(cookie_name)
- 删除指定cookie
- driver.delete_cookie(cookie_name)
- 删除所有cookie
- driver.delete_all_cookies()
页面等待
- 强制等待
- import time
- time.sleep()
- 隐式等待
- driver.implicitly_wait()
- 显示等待
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.support.ui import WebDriverWait
- try:
- element = WebDriverWait(driver, 10).until(EC.presence_of_element_located(By.ID, 'myDynamicElement'))
- finally:
- driver.quit()
多窗口打开和切换
- 打开多窗口
- driver.get('网址1')
- driver.execute_script("window.open('网址2')")
- 网址1为当前窗口,此时的操作指定网址1
- 切换窗口
- driver.switch_to.window(driver.window_handles[n])
- n为第n个窗口,窗口数从0开始