zoukankan      html  css  js  c++  java
  • Selenium 日期控件处理和JS定位

    点击日期控件

    常规方法,先定位到日期控件,再选择日期

    from selenium import webdriver
    from time import sleep
    
    # 启动浏览器
    driver = webdriver.Chrome()
    driver.get("https://www.12306.cn/index/")
    driver.maximize_window()
    driver.implicitly_wait(10)
    # 定位日期控件
    driver.find_element_by_css_selector("[data-click='train_date']").click()
    sleep(1)
    # 获取日期的集合
    data = driver.find_elements_by_css_selector("div.cal>div.cal-cm>div.cell>div.so")
    # 点击指定的日期
    data[28].click()
    sleep(5)
    # 退出
    driver.quit()

    修改日期输入框的readonly属性

    from selenium import webdriver
    from time import sleep
    
    # 启动浏览器
    driver = webdriver.Chrome()
    driver.get("https://www.12306.cn/index/")
    driver.maximize_window()
    driver.implicitly_wait(10)
    
    # 先通过日期输入框的id="train_date"来定位输入框,再通过removeAttribute方法移除"readonly"属性
    js = "document.getElementById('train_date').removeAttribute('readonly');" # 1.原生js,移除属性
    # js = "$('input[id=train_date]').removeAttr('readonly')"  # 2.jQuery,移除属性
    # js = "$('input[id=train_date]').attr('readonly',false)"  # 3.jQuery,设置为false
    # js = "$('input[id=train_date]').attr('readonly','')"  # 4.jQuery,设置为空(同3)
    # 调用js脚本
    driver.execute_script(js)
    # 清空默认值
    driver.find_element_by_css_selector("#train_date").clear()
    # 输入日期
    driver.find_element_by_css_selector("#train_date").send_keys("2020-10-29")
    # 退出
    sleep(5)
    driver.quit()

    JS的5种定位方式总结

    其实看到这里,上面的定位方式应该就基本够用了,但是有的时候就是会出现一些诡异的定位失效或者定位到了点击失效的问题,这个时候如果用js进行直接执行该事件,往往就可以解决那些诡异的事情~

    • id定位:document.getElementById()
    • name定位:document.getElementsByName()
    • tag定位:document.getElementsByTagName()
    • class定位:document.getElementsByClassName()
    • css定位:document.querySelectorAll()
    search_js = "document.getElementsByName('wd')[0].value='selenium';"
    search_js2 = "document.querySelectorAll('.s_ipt')[0].value='selenium';"
    button_js = "document.getElementById('su').click();"
    button_js2 = "document.getElementsByClassName('s_btn')[0].click()"
    driver.execute_script(search_js2)
    driver.execute_script(button_js2)
  • 相关阅读:
    PHP中空字符串介绍0、null、empty和false之间的关系
    腾迅股票数据接口 http/javascript
    PHP关于依赖注入(控制反转)的解释和例子说明
    Xcode离线安装帮助文档
    php对二维数组进行相关操作(排序、转换、去空白等)
    phpqrcode不能输出二维码
    Google Chrome浏览器中如何使用命令
    Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)
    酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)
    第三方支付过程中session失效问题
  • 原文地址:https://www.cnblogs.com/watery/p/13878379.html
Copyright © 2011-2022 走看看