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