美文网首页python+selenium
selenium—处理日历选择控件&异常处理

selenium—处理日历选择控件&异常处理

作者: 小二哥很二 | 来源:发表于2019-07-25 18:00 被阅读0次
    一、对于UI自动化时,页面需要选择,或者有下拉框选择,无法输入时候,可以更改页面的属性。以12306为例,删除readonly属性就可以: 4.png

    这时候就可以去输入而不是选择了。当然,在编写脚本时,需要执行js语句来删除该属性:

    js=document.getElementById("train_date").removeAttribute("readonly");
    driver.execute_script(js)
    

    然后再定位的文本框,一定要先清空,再输入,注意输入的格式:

    driver.find_element_by_id('train_date').clear()
    driver.find_element_by_id('train_date').send_keys('2019-12-12')
    

    或者用js方法输入

    js=document.getElementById("train_date").value="2019-12-12";
    driver.execute_script(js)
    

    -----------------------------------------------------------------------

    二、滚动条处理

    纵向滚动条底部:
    js=document.getElementById("xxxx").scrollTop=10000;
    纵向滚动条顶部:
    js=document.getElementById("xxxx").scrollTop=0;
    横向滚动条右侧:
    js=document.getElementById("xxxx").scrollLeft=10000;
    横向滚动条左侧:
    js=document.getElementById("xxxx").scrollLeft=0;

    -----------------------------------------------------------------------

    三、异常处理

    1.异常概述:调试程序时经常会报出一些异常,这时就需要我们对异常进行捕获处理,防止程序终止。
    2.引入原因:代码出错时由于不能执行到driver.quit,需要手动关闭浏览器,其实还需要关闭chromedriver进程,否则进程不会自动退出
    3.导致结果:执行大量的自动化用例就会使大量的chromedriver进程没有退出导致内存占用,机器会变卡

    import traceback
    from selenium import webdriver
    
    options=webdriver.ChromeOptions()
    options.add_argument('--headless')
    driver=webdriver.Chrome(options=options)
    try:
        driver.get('https://www.baidu.com/')
        driver.find_element_by_id('kk').send_keys('python')
    except:
        print(traceback.format_exc())
    finally:
        driver.quit()
    
    四、指定浏览器位置

    对于浏览器不是默认安装的,selenium在执行的时候会默认启动浏览器的默认安装位置,此时就会报错。解决办法:

    from selenium import webdriver
    import time
    from selenium.webdriver.chrome.options import Options
    
    op = Options()
    op.binary_location = r"D:\Google\Chrome\Application\chrome.exe"
    dr = webdriver.Chrome(chrome_options=op)
    dr.implicitly_wait(3)
    dr.get('https://www.baidu.com/')
    time.sleep(3)
    dr.close()
    

    PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!

    相关文章

      网友评论

        本文标题:selenium—处理日历选择控件&异常处理

        本文链接:https://www.haomeiwen.com/subject/wghkrctx.html