一.強制等待
? ? time.sleep(等待時間)
二.顯示等待
? ? 明確等到摸個條件滿足之后,再執(zhí)行下一步操作
? ? 程序默認每隔0.5秒看一眼森瘪,如果條件成立了,則執(zhí)行下一步冕房,否則繼續(xù)等待住册,直到超過設(shè)置的最長時間,然后拋出TimeoutException
? ??from selenium.webdriver.support.ui import WebDriverWait
? ? wait=WebDriverWait(driver,10)
? ? until 直到達成條件就不再等待
? ? until_not 直到不滿足條件就不再等待
? ??from selenium.webdriver.supportimport expected_conditions as ec
? ? wait.until(ec.presence_of_element_located((By.XPATH,''))) 返回的是一個元素
? ? ec等待條件:
? ? ? ? 判斷當前頁面的title是否精確等于預期
????????title_is
? ? ? ? 判斷當前頁面的title是否包含預期字符串
????????title_contains
? ? ? ? 判斷某個元素是否被加到了dom樹里雹拄,并不代表該元素一定可見
????????presence_of_element_located
? ? ? ? 判斷某個元素是否可見收奔,可見代表元素非隱藏
????????visibility_of_element_located
? ? ? ? 跟上面的方法做一樣的事情,只是上面的方法要傳入locator滓玖,這個方法直接傳定位到的element就好了
????????visibility_of
? ? ? ? 判斷是否至少有一個元素存在于dom樹種
????????presence_of_all_elements_located
? ? ? ? 判斷某個元素中的text是否包含預期的字符串
????????text_to_be_present_in_element
? ? ? ? 判斷某個元素中的value屬性是否包含了預期的字符串
????????text_to_be_present_in_element_value
? ? ? ? 判斷該frame是否可以switch進去坪哄,如果可以的返回true并switch進入,否則返回false
????????frame_to_be_available_and_switch_to_it
? ? ? ? 判斷某個元素中是否不選在與dom樹或不可見
????????invisibility_of_element_located
? ? ? ? 判斷某個元素是否可見并且是enable的势篡,這樣的話才叫clickable
????????element_to_be_clickable
? ? ? ? 等某個元素從dom樹中移除翩肌,這個方法返回的True或False
????????staleness_of
? ? ? ? 判斷某個元素是否被選中了,一般用在下拉列表
????????element_to_be_selected
? ? ? ? 跟上面的方法一樣禁悠,只是這要方法傳入locator
????????element_located_to_be_selected
? ? ? ? 判斷某個元素的選中狀態(tài)是否符合預期
????????element_selection_state_to_be
? ? ? ? 跟上面的方法一樣念祭,只是這個方法傳入locator
????????element_located_selection_state_to_be
? ? ? ? 判斷頁面上是否存在alert
????????alert_is_present
三.隱形等待
? ??driver.implicitly_wait(10)
? ? 設(shè)置最長等待時間,在這個時間內(nèi)只要有個時間點加載完成碍侦,則執(zhí)行下一步代碼粱坤,在整個driver會話周期內(nèi)隶糕,設(shè)置一次即可,全局都可用站玄,一次會話只調(diào)用一次
四.iframe操作
? ? iframe:一個網(wǎng)頁里面嵌套了另外一個框架/頁面
? ? 如果我們要操作的元素枚驻,在內(nèi)嵌的iframe頁面中,那么必須要從當前頁面株旷,切換到iframe當中再登,然后在查找元素并執(zhí)行操作
? ? 切換iframe
? ? 1.driver.switch_to.frame(iframe的name屬性\iframe的WebElement對象\iframe的下標(當前頁面中第幾個iframe))
? ? ?2.driver.frame_to_be_available_and_switch_to_it(iframe的name屬性\iframe的WebElement對象\iframe的下標(當前頁面中第幾個iframe)
? ? 退出iframe
? ??driver.switch_to.default_content()
? ??driver.switch_to.parent_frame()
五.彈出框操作
? ? 彈出框的種類:
? ? ? ? ? ? 1.頁面彈框
? ? ? ? ? ? 2.alert彈出框
? ? alert彈出框操作
? ? ? ? 1.使用switch_to方法先切換到瀏覽器彈出框
? ? ? ? ? ? alert = driver.switch_to.alert
? ? ? ? 2.alert類提供的操作方法????
? ? ? ? ? ? alert.dismiss()? 關(guān)閉
? ? ? ? ? ? alert.accept() 接受
? ? ? ? ? ? alert.text() 獲取彈出框的內(nèi)容
? ? ? ? ? ? alert.send_keys() 往彈出框里面輸入文本
六.窗口切換
1.獲取當前所有的窗口
? ? windows? = driver.window_handles
?2.切換到指定的窗口
? ? driver.switch_to.window(windows[-1]) 打開最新的窗口
? ? driver.switch_to.window(windows[0])切換到第一個窗口
?3.獲取當前窗口的句柄
? ? driver.current_wondow_handle
七.submit方法????
? ? 如果是在form中提交,可以直接使用submit方法