随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
学习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="width: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,然后将text与JavaScript代码通过“+”进行拼接。这样做的目的是为了使输入内容变得可自定义。最后,通过execute_script()执行JavaScript代码。
text="inout text"
js = "var sum=document.getElementById('id');sum.value='" + text +'';"
driver.execute_script(js);