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);

  • 相关阅读:
    118/119. Pascal's Triangle/II
    160. Intersection of Two Linked Lists
    168. Excel Sheet Column Title
    167. Two Sum II
    172. Factorial Trailing Zeroes
    169. Majority Element
    189. Rotate Array
    202. Happy Number
    204. Count Primes
    MVC之Model元数据
  • 原文地址:https://www.cnblogs.com/lirongyang/p/11459770.html
Copyright © 2011-2022 走看看