一、鼠標點擊元素操作
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com/")
#找到“登錄”這個按鈕,並且點擊(click())
WebDriverWait(driver,15).until(EC.visibility_of_element_located((By.XPATH,'//div[@id="u1"]//a[text()="登錄"]'))).click()
二、alter彈框
driver=webdriver.Chrome()
driver.maximize_window()
driver.get("E:\\python08\\web_selenium\\HTML_HomeWork.html")
driver.execute_script("window.alert('這是一個測試Alert彈窗');")
WebDriverWait(driver,30).until(EC.alert_is_present()) #等待直到alert彈框出現
#切換到該alert彈框
alert=driver.switch_to.alert
#獲取alert彈框的文本
text=alert.text
print(text)
#接受該alert彈框的內容
alert.accept()
#不接受(取消)
alert.dismiss()
三、鼠標操作
在進行頁面操作時,需要用鼠標進行左鍵點擊、右鍵點擊、雙擊、鼠標懸浮(比如鼠標移到某個位置就會出現一些元素)、鼠標拖動等操作,這時需要導入ActionChains模塊
- perform() 執行所有ActionChains 中存儲的行為
- click_and_hold(element)左鍵點擊
- context_click(elem) 右擊
- double_click(elem) 雙擊
- drag_and_drop(source,target) 拖動
- move_to_element(elem) 鼠標懸停
例如:百度首頁,鼠標移動到“設置”時會出現下拉選項
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
#找到“設置”這個元素
element = driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_settingicon"]')
#實例化ActionChains類
#調用鼠標操作
#最后,調用perform()去執行所有的鼠標動作。
ac = ActionChains(driver)
# 鼠標懸浮
ac.move_to_element(element)
# 執行鼠標動作
ac.perform()
以上操作,可以合起來寫成一條代碼:ActionChains(driver).move_to_element(element).perform()
tips:鼠標懸浮的下拉列表元素定位:CTRL + Shift + C,松開,移動到要定位的元素處
四、下拉選項框
類似於這種下拉選項框,然后選擇某個選項的操作
from selenium.webdriver.support.ui import Select
sele_obj = driver.find_element_by_xpath('//select[@name="ft"]') #找到該下拉選項框
#實例化
select = Select(sele_obj)
#根據下標選值
select.select_by_index(2)
#根據value屬性選值
select.select_by_value("rtf")
#根據文本內容選值
select.select_by_visible_text("Adobe Acrobat PDF (.pdf)")
五、窗口切換
網頁上的某些操作會打開新的窗口,如果要到新的窗口去做其他操作,就需要進行窗口切換
#打開一個瀏覽器 - 與瀏覽器之間的會話開始
driver = webdriver.Chrome()
#全屏操作
driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("火車票") #百度首頁輸入“火車票”
driver.find_element_by_id("su").click() #點擊查詢
#等待元素出現
xpath_ele = '//h3/a[contains(text()," 12306")]'
ele_locator = (By.XPATH,xpath_ele)
WebDriverWait(driver,30,1).until(EC.visibility_of_element_located(ele_locator))
#獲取未操作前的窗口總數 - 只有1個窗口
handles = driver.window_handles
print(handles)
#點擊 - 帶來窗口數量的變化 - 會有2個窗口(新窗口出現的時間把控不了)
driver.find_element_by_xpath(xpath_ele).click()
WebDriverWait(driver,10).until(EC.new_window_is_opened(handles))
#重新獲取一下窗口列表 - 有2個窗口了
handles = driver.window_handles
print(handles)
#切換到新的窗口
driver.switch_to.window(handles[-1])
切換到第一個窗口
# driver.switch_to.window(windows[0])
#等待元素出現再操作
WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[@href="XXXXXX"]')))
driver.find_element_by_xpath('//a[@href="XXXXXXX"]').click()
#關掉當前頁面,回到第一個頁面。
driver.close()
未完待續。。。