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()