expected_conditions 判断元素出现的条件
有些页面的下拉栏,需要鼠标移动过去,才会出现,这个时候则需要一个判断,用到expected_conditions。如图所示的操作。
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.chrome
#打开浏览器
driver = webdriver.Chrome()
#打开百度
driver.get("https://baidu.com")
#最大化
driver.maximize_window()
#等待“设置”元素出现
a=EC.visibility_of_element_located((By.ID,"s-usersetting-top"))
WebDriverWait(driver,10).until((a))
#点击“设置”
driver.find_element_by_id("s-usersetting-top").click()
driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]/span').click()
time.sleep(2)
#等待“保存设置”元素出现,点击保存
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//*[@id="se-setting-7"]/a[2]')))
driver.find_element_by_xpath('//*[@id="se-setting-7"]/a[2]').click()
ActionChains 模拟鼠标操作
这里模拟的是,鼠标移动的效果,停留在悬浮下拉框。
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.chrome
#打开浏览器
driver = webdriver.Chrome()
#打开百度
driver.get("https://baidu.com")
#最大化
driver.maximize_window()
#找到“设置”这个元素
ele=driver.find_element_by_id("s-usersetting-top")
#实例化ActionChains类
ac = ActionChains(driver)
#将鼠标移动到“设置”
ac.move_to_element(ele)
#调用perform执行命令
ac.perform()
time.sleep(4)