十一 js日期操作

課堂派 登錄按鈕,手動能點(diǎn)擊,代碼定位無法點(diǎn)擊。用js去點(diǎn)擊就可以了

# 定位登錄按鈕
login_= driver.find_element(By.XPATH,
                    '''//*[text()="登錄"]''')
driver.execute_script("arguments[0].click()", login_)

12306 為例子,12306日期框是不能輸入的,被設(shè)置了readOnely,所以要修改成false.

情況1:
1.如果元素能定位,那么就直接寫定位發(fā)達(dá)式先定位出得到一個(gè)element對象。
2.寫js 修改value
js = """ argument[0].value = "value" """
driver.execute_script(ele, value) 執(zhí)行js

  1. 如果有的元素不可見 display:none display:block 可見,也要修改js
    js = """ argument[0].style.display="block" """
    driver.execute_script(ele) 執(zhí)行js

情況2:
如果元素不能定位,我們直接寫源生js就行了。

image.png

需要注意如果選擇了帶s得到是列表,需要跟上索引[index]取出對應(yīng)的element.接下來的操作和情況1 一樣。只需要將arguments[0]替換成源生js 表達(dá)式就行了。

代碼如下

from selenium import webdriver
import time
import datetime



# 實(shí)例化 瀏覽器對象
driver = webdriver.Chrome()
# 打開 12306官網(wǎng)
driver.get("https://www.12306.cn/index/")
time.sleep(8)

# 獲取當(dāng)前一周之后的時(shí)間
date = datetime.datetime.now() + datetime.timedelta(weeks=1)  # 獲取當(dāng)前一周之后的時(shí)間,這里還沒有字符串格式化
date = date.strftime("%Y-%m-%d")

# 編寫JS代碼操作頁面定位的元素 并賦值
js_start_end = '''
            var start1 = document.getElementById("fromStation");
            start1.value ="CQW"
            var start = document.getElementById("fromStationText");
            start.value = "重慶";
            var end1 = document.getElementById("toStation");
            end1.value = "KMM";
            var end = document.getElementById("toStationText");
            end.value = "昆明";
            var date = document.getElementById("train_date");
            date.readOnly = false;
            date.value = arguments[0];
            document.querySelector('a[id="search_one"]').click()

'''
driver.execute_script(js_start_end, date)
time.sleep(5)
# 退出驅(qū)動 釋放資源
driver.quit()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容