一、调用JavaScript(控制浏览器的滚动条)
WebDriver提供了execute_script()方法来执行JavaScript代码。
用于调整浏览器滚动条位置的JavaScript代码如下:
# -*- coding: utf-8 -*- from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys #访问百度 driver=webdriver.Chrome() driver.get("http://www.baidu.com") #设置浏览器窗口大小 driver.set_window_size(600,600) #搜索 driver.find_element_by_id("kw").send_keys("selenium") sleep(2) driver.find_element_by_id("kw").send_keys(Keys.ENTER) sleep(2) #通过JavaScript设置浏览器窗口的滚动条位置 js="window.scrollTo(100,450)" driver.execute_script(js) sleep(3) driver.quit()
通过浏览器打开百度进行搜索,并且提前通过set_window_size()方法将浏览器窗口设置为固定宽高显示,目的是让窗口出现水平和垂直滚动条。然后通过execute_script()方法执行JavaScript代码来移动滚动条的位置。
当然,JavaScript的作用不仅仅体现在浏览器滚动条的操作上,还可以用它向页面中textarea文本框输入内容。
#html <!DOCTYPE html> <html> <head> </head> <body> <textarea id='id' style="width:98%" cols="50" rows="5" class="textarea"> </textarea> </body> </html>
虽然我们可以通过id的方式将其进行定位,单却不能通过send_keys()向文本框中输入文本信息,此时,我们可以借助JavaScript代码完成输入。
#js_test.py # -*- coding: utf-8 -*- from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys driver=webdriver.Chrome() driver.get("file:///C:/Users/xxxx/Desktop/new%206.html") text="input text" js="var sum=document.getElementById('id'); sum.value='"+text+"';" driver.execute_script(js) sleep(5) driver.quit()
效果图如下所示:
首先定义了要输入的内容text,然后将text与javaScript代码通过“+”进行拼接,这样做的目的是为了使输入内容变得可自定义。最后,通过execute_script()执行JavaScript代码。