selenium模組(五):元素互動操作
阿新 • • 發佈:2018-12-05
點選、清空
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By #按照什麼方式查詢,By.ID,By.CSS_SELECTOR from selenium.webdriver.common.keys import Keys #鍵盤按鍵操作 from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait #等待頁面載入某些元素 browser=webdriver.Chrome() browser.get('https://www.amazon.cn/') wait=WebDriverWait(browser,10) input_tag=wait.until(EC.presence_of_element_located((By.ID,'twotabsearchtextbox'))) input_tag.send_keys('iphone 8') button=browser.find_element_by_css_selector('#nav-search > form > div.nav-right > div > input') button.click() import time time.sleep(3) input_tag=browser.find_element_by_id('twotabsearchtextbox') input_tag.clear() #清空輸入框 input_tag.send_keys('iphone7plus') button=browser.find_element_by_css_selector('#nav-search > form > div.nav-right > div > input') button.click() #browser.close() 點選,清空
Action Chains
#http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By #按照什麼方式查詢,By.ID,By.CSS_SELECTOR from selenium.webdriver.common.keys import Keys #鍵盤按鍵操作 from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait #等待頁面載入某些元素 browser=webdriver.Chrome() browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') browser.switch_to.frame('iframeResult') #切換到iframeResult source=browser.find_element_by_id('draggable') target=browser.find_element_by_id('droppable') actions=ActionChains(browser) #拿到動作鏈物件 actions.drag_and_drop(source,target) #把動作放到動作鏈中,準備序列執行 actions.perform() #執行
在互動動作比較難實現的時候可以自己寫JS(萬能方法)
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By #按照什麼方式查詢,By.ID,By.CSS_SELECTOR from selenium.webdriver.common.keys import Keys #鍵盤按鍵操作 from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait #等待頁面載入某些元素 try: browser=webdriver.Chrome() browser.get('https://www.baidu.com') browser.execute_script('alert("hello world")') #列印警告 finally: browser.close()
frame切換
#frame相當於一個單獨的網頁,在父frame裡是無法直接檢視到子frame的元素的,必須switch_to_frame切到該frame下,才能進一步查詢
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By #按照什麼方式查詢,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys #鍵盤按鍵操作
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait #等待頁面載入某些元素
try:
browser=webdriver.Chrome()
browser.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
browser.switch_to.frame('iframeResult') #切換到id為iframeResult的frame
tag1=browser.find_element_by_id('droppable')
print(tag1)
# tag2=browser.find_element_by_id('textareaCode') #報錯,在子frame裡無法檢視到父frame的元素
browser.switch_to.parent_frame() #切回父frame,就可以查詢到了
tag2=browser.find_element_by_id('textareaCode')
print(tag2)
finally:
browser.close()