selenium执行js代码
import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.12306.cn/index/') # ----------------------------通过js代码修改元素的属性(元素的定位不用js做)-------------------- from_ele = driver.find_element(by=By.ID, value="fromStationText") to_ele = driver.find_element(by=By.ID, value='toStationText') # js代码 js = """ var fro_ele = arguments[0]; var to_ele = arguments[1]; fro_ele.value = '上海'; to_ele.value = '北京'; return '操作完了'; """ # 执行js代码 res = driver.execute_script(js, from_ele, to_ele) # 注:除了js参数,后面的参数都会被arguments所接收,arguments是一个数组,可以通过下标取值 print('js代码执行之后的返回值:', res) # res的值就是return出来的"操作完了" # -----------------------通过js来定位元素------------------------------------- # 定位语句和在页面上通过console输入的语句相同(可以借此先检查定位语句是否有误) js = """ var fro_ele = document.getElementById('fromStationText'); return fro_ele; """ res = driver.execute_script(js) print(res) # res是return出来的定位到的元素 # 后续的操作和常规的一样 res.click() # 点击一下始发站输入框(否则框中的提示语依然存在) res.send_keys('广州') # ---------------------通过js定位元素并修改元素属性当然也是可以的------------------------- js = """ document.getElementById('fromStationText').value="深圳"; """ # 分开写也可以 js1 = """ var to_ele = document.getElementById('toStationText'); to_ele.value="长沙"; """ driver.execute_script(js) driver.execute_script(js1) time.sleep(5) driver.quit()