zoukankan      html  css  js  c++  java
  • (二十八)WebDriver API之调用JavaScript

    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,

    这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      虽然WebDriver提供了操作浏览器的前进和后退方法,但对于浏览器滚动条并没有提供相应的操作方法。在这种情况下,就可以借助JavaScript来控制浏览器的滚动条。WebDriver提供了execute_script()方法来执行JavaScript代码。

      一般我们想到的必须使用滚动条的场景是:注册时的法律条文的阅读。判断用户是否阅读完的标准是:滚动条是否拉倒页面底部。当然,有时候为了使操作更接近用户行为也会使用滚动条,例如用户要操作的元素在页面的第二屏,一般用户不会对看不到的二元素进行操作,name就需要先将滚动条拖动到页面的第二屏再进行操作。

      用于调整浏览器滚动条位置的JavaScript代码如下:

    ......
    <!--Windows.scrollTo(左边距,左边距);-->
        window.scrollTo(0,450);
    ......

      window.scrollTo()方法用于设置浏览器窗口滚动条的水平和垂直位置。方法的第一个参数表示水平的左间距,第二个参数表示垂直的上边距。其代码如下:

    from selenium import webdriver
    from time import sleep
    
    #访问百度
    driver = webdriver.Firefox()
    driver.get('http://www.baidu.com')
    driver.implicitly_wait(10)
    #设置浏览器窗口大小
    driver.set_window_size(600,600)
    
    #搜索
    driver.find_element_by_id('kw').send_keys('selenium')
    driver.find_element_by_id('su').click()
    sleep(2)
    
    #通过JavaScript设置浏览器窗口的滚动条
    js = "window.scrollTo(100,500);"
    driver.execute_script(js)
    sleep(3)

      通过浏览器打开百度进度搜索,并且提前通过set_window_size()方法将浏览器窗口设置为固定宽高显示,目的是让窗口出现水平和垂直滚动条。然后通过execute_script()方法执行JavaScript代码来移动滚动条,如下图:

      当然,JavaScript的作用不仅仅体现在浏览器滚动条的操作上,还可以用它向页面中textarea文本框输入内容,如下图:

    文本框前端代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <textarea class="textarea" style="100px;height:100px">
        </textarea>
    </body>
    </html>
    

      

      虽然我们可以通过class的方式将其进行定位,但却不能通过send_keys()向文本框中输入文本信息。这种情况下,就需要借助JavaScript代码完成输入。

    text="inout text"
    js = "var sum=document.getElementById('id');sum.value='" + text +'';"
    driver.execute_script(js);

     

       首页定义了要输入的内容text,然后将textJavaScript代码通过“+”进行拼接。这样做的目的是为了使输入内容变得可自定义。最后,通过execute_script()执行JavaScript代码。

     

    text="inout text"
    js = "var sum=document.getElementById('id');sum.value='" + text +'';"
    driver.execute_script(js);

  • 相关阅读:
    固态硬盘安装后优化
    如何在面试中为人才留下好印象
    数据化管理学习笔记
    项目经理入门记(一)
    Ubuntu10下MySQL搭建Amoeba系列(文章索引)
    SQL Server 性能优化实战系列(文章索引)
    Ubuntu12下挂载硬盘(9TB)(文章索引)
    SQL Server 设计开发系列(文章索引)
    简单实用SQL脚本
    SQL Server 维护管理系列(文章索引)
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11459770.html
Copyright © 2011-2022 走看看