1. 程式人生 > >Selenium3+webdriver學習筆記14(等待判斷 滑鼠事件 )

Selenium3+webdriver學習筆記14(等待判斷 滑鼠事件 )

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
Selenium3+webdriver學習筆記14(等待判斷 滑鼠事件 )
'''
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
import time,os

# about:addons 火狐瀏覽器安裝元件,訪問的地址

# <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
#id
keys="設定"
delay=5
url="https://www.baidu.com/"
driver=webdriver.Firefox()

driver.get(url)

#讓彈窗頁面不顯示
# js='document.getElementById("id名字").style.display="none";'

#通過指令碼方式操作 id name tagname classname css
# document.getElementById("")
# document.getElementsByName("")
# document.getElementsByTagName("")
# document.getElementsByClassName("")
# document.querySelectorAll("")

#檔案下載-待除錯
# fp = webdriver.FirefoxProfile()
# fp.set_preference("browser.download.folderList",2)
# fp.set_preference("browser.download.manager.showWhenStarting",False)
# fp.set_preference("browser.download.dir", os.getcwd())
# fp.set_preference("browser.helperApps.neverAsk.saveToDisk",
# "application/octet-stream")
#
# driver = webdriver.Firefox(firefox_profile=fp)
# driver.get("https://pypi.org/project/selenium/#files")
# driver.find_element_by_partial_link_text("selenium-3.141.0.tar.gz").click()
# #確定下載
# t=driver.switch_to.alert
# t.accept()

#等待使用
# 強制等待
time.sleep(delay)

#隱形等待
driver.implicitly_wait(delay)

#顯示等待
input_str=WebDriverWait(driver,10).until(lambda driver:driver.find_element(By.ID,"kw"),message="error!")
input_str.send_keys(keys)

kk = WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id("kw"),message="worry!")
kk.send_keys("測試")

"""參考https://www.cnblogs.com/lvzb86/p/9321929.html
click(on_element=None) ——單擊滑鼠左鍵

click_and_hold(on_element=None) ——點選滑鼠左鍵,不鬆開

context_click(on_element=None) ——點選滑鼠右鍵

double_click(on_element=None) ——雙擊滑鼠左鍵

drag_and_drop(source, target) ——拖拽到某個元素然後鬆開

drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某個座標然後鬆開

key_down(value, element=None) ——按下某個鍵盤上的鍵

key_up(value, element=None) ——鬆開某個鍵

move_by_offset(xoffset, yoffset) ——滑鼠從當前位置移動到某個座標

move_to_element(to_element) ——滑鼠移動到某個元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移動到距某個元素(左上角座標)多少距離的位置

perform() ——執行鏈中的所有動作

release(on_element=None) ——在某個元素位置鬆開滑鼠左鍵

send_keys(*keys_to_send) ——傳送某個鍵到當前焦點的元素

send_keys_to_element(element, *keys_to_send) ——傳送某個鍵到指定元素
"""

"""參考https://www.cnblogs.com/lvzb86/p/9492097.html
title_is:判斷當前頁面的title是否等於預期
title_contains:判斷當前頁面的title是否包含預期字串
presence_of_element_located:判斷某個元素是否被加到了dom樹裡,並不代表該元素一定可見
visibility_of_element_located:判斷某個元素是否可見. 可見代表元素非隱藏,並且元素的寬和高都不等於0
visibility_of:跟上面的方法做一樣的事情,只是上面的方法要傳入locator,這個方法直接傳定位到的element就好了
presence_of_all_elements_located:判斷是否至少有1個元素存在於dom樹中。舉個例子,如果頁面上有n個元素的class都是'column-md-3',那麼只要有1個元素存在,這個方法就返回True
text_to_be_present_in_element:判斷某個元素中的text是否 包含 了預期的字串
text_to_be_present_in_element_value:判斷某個元素中的value屬性是否包含了預期的字串
frame_to_be_available_and_switch_to_it:判斷該frame是否可以switch進去,如果可以的話,返回True並且switch進去,否則返回False
invisibility_of_element_located:判斷某個元素中是否不存在於dom樹或不可見
element_to_be_clickable - it is Displayed and Enabled:判斷某個元素中是否可見並且是enable的,這樣的話才叫clickable
staleness_of:等某個元素從dom樹中移除,注意,這個方法也是返回True或False
element_to_be_selected:判斷某個元素是否被選中了,一般用在下拉列表
element_located_to_be_selected
element_selection_state_to_be:判斷某個元素的選中狀態是否符合預期
element_located_selection_state_to_be:跟上面的方法作用一樣,只是上面的方法傳入定位到的element,而這個方法傳入locator
alert_is_present:判斷頁面上是否存在alert
"""

driver.quit()