zoukankan      html  css  js  c++  java
  • web自动化中js操作的操作应用

    在做web自动化过程,有时会遇到文本框为只读状态,无法手动输入值,这时就需要使用js,将其readonly属性设置为false,再进行send_keys操作。

    以下代码以12306购票网站为例,首先在浏览器控制台中调试js,查看日期框属性,通过修改只读属性后,再手动赋值,通过以下几行代码,可以看到已经修改了日期框的值:

     那么,转换成python代码,如何实现呢?

    以下代码中实现了手动修改出发地、目的地和出发日期的功能:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/3/17 14:33
    # @Author  : benben
    # @File    : js_12306.py
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    import time
    
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://www.12306.cn/index/")
    
    # 查找出发地
    start_text = (By.XPATH, '//input[@id="fromStationText"]')
    start = (By.XPATH, '//input[@id="fromStation"]')
    st_ele = driver.find_element(*start_text)
    s_ele = driver.find_element(*start)
    
    # 修改出发地
    WebDriverWait(driver, 10).until(EC.visibility_of_element_located(start_text))
    time.sleep(3)
    driver.execute_script('var st=arguments[0];var s=arguments[1];st.value ="北京";s.value="BJP"', st_ele, s_ele)
    
    # 查找目的地
    to_text = (By.XPATH, '//input[@id="toStationText"]')
    to = (By.XPATH, '//input[@id="toStation"]')
    
    to_ele = driver.find_element(*to_text)
    t_ele = driver.find_element(*to)
    # 修改目的地
    WebDriverWait(driver, 10).until(EC.visibility_of_element_located(to_text))
    driver.execute_script('var tx=arguments[0]; to=arguments[1];tx.value="上海";to.value="SHH"', to_ele, t_ele)
    
    # 查找日期框
    loc = (By.XPATH, '//input[@id="train_date"]')
    element = driver.find_element(*loc)
    # 修改日期框中的 readOnly 属性
    d_date = time.strftime("%Y-%m-%d", time.localtime())
    driver.execute_script("var a=arguments[0];a.readOnly = false;a.value=arguments[1];", element, d_date)
    
    # 点击查询按钮
    driver.find_element(By.XPATH, '//a[@id="search_one"]').click()
    
    time.sleep(3)
    driver.quit()
  • 相关阅读:
    SAP PI 如何实现消息定义查询
    EWM与ERP交互程序
    ITS Mobile Template interpretation failed. Template does not exist
    SAP Material Flow System (MFS) 物料流系统简介
    SAP EWM Table list
    EWM RF 屏幕增强
    SAP EWM TCODE list
    SAP扩展仓库管理(SAPEWM)在线研讨会笔记
    ERP与EWM集成配置ERP端组织架构(二)
    EWM RF(Radio Frequency)简介
  • 原文地址:https://www.cnblogs.com/benben-wu/p/12511012.html
Copyright © 2011-2022 走看看