1. 程式人生 > 其它 >python-selenium js滾動、元素屬性操作

python-selenium js滾動、元素屬性操作

import time

from selenium import webdriver
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

option = webdriver.ChromeOptions()
option.add_experimental_option('detach', True)
driver = webdriver.Chrome(service_log_path="log.txt", executable_path="/Users/zhanghui04/Downloads/chromedriver",
chrome_options=option)
# 繞過百度驗證碼
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",
{'source': 'Object.defineProperty(navigator,"webdriver",{get:()=>undefind})'})
driver.get("http://www.baidu.com")
driver.maximize_window() # 視窗最大化

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'kw')))

ele_input = driver.find_element(By.ID, 'kw')
ele_input.send_keys("測試")
ele_input.send_keys(Keys.ENTER) # 鍵盤操作

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[text()="(動)對機械、儀器等的效能和精度進行試驗性測量。"]')))
con_ele = driver.find_element(By.XPATH, '//*[text()="(動)對機械、儀器等的效能和精度進行試驗性測量。"]')
time.sleep(3)
# arguments[0] 指代con_ele
driver.execute_script("arguments[0].scrollIntoView();", con_ele) # 元素與頁面頂部對齊
time.sleep(3)
driver.execute_script("arguments[0].scrollIntoView(false);", con_ele) # 元素與頁面底部對齊
time.sleep(3)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)") # 滾動到底部
time.sleep(3)
driver.execute_script("window.scrollTo( document.body.scrollHeight, 0)") # 滾動到頂部

js = 'var key_in = document.getElementById("kw"); key_in.readOnly=true;key_in.removeAttribute("readOnly");key_in.value="測試工作"; var but_in = document.getElementById("su");but_in.click();'
driver.execute_script(js)

time.sleep(5)
driver.quit()