1、开始之前,我们必须要安装有selenium,不会装的请看引用经验,谢谢。打开cmd命令提示符,pip show selenium可见小编这里是selenium3.13,没错,我们这里就是以selenium3为例
2、我们所有代码以驱动IE浏览器为例,在此之前,请自行准备好IE浏览器驱动。没有的小伙伴可以在经验最下菱诎逭幂方给小编投票,留下邮箱,小编第一时间会给小伙伴发过去。小编手里的是IEDriverServer 3.6.0.0 在IE8可完美运行32位和64位的都有OK,这里我们开始写代码#-*- conding:utf8 -*-from selenium import webdriver#导入selenium中的webdriverweb = webdriver.Ie(".\IEDriverServer.exe")#设置驱动程序路径web.get("https://www.baidu.com")#打开百度如图
3、此时我们可以调用js的一段代码,例如就调用js的Window对象打印一句话"Selenium 执行完毕"我们要用到的是Selenium库webdriver对象提供的execute_script方法代码如图web.execute_script("window.alert('Selenium执行完毕')")
4、运行代码,可以看到驱动器运行之后,打开了百度页面。然后调用让js调用了window对象的alert方法,探出了一个对话框。如图
5、此时我们可以让可以让js去做一些事情,例如让js去获取某个页面元素的信息。然后再通过selenium返回给python这里,我们就让selenium输入一些信息,然后我们通过枣娣空郅js去获取这个信息。这之前,我们还需要导入Selenium的一个模块。即Keys模块from selenium.webdriver.common.keys import Keys#然后我们让selenium在百度的input标签内输入1个字符串(id为kw)web.find_element_by_id("kw").send_keys("Hello")#找到id位kw的元素,然后发送数据
6、最后,我们通过js获得该元素的value值。js代码:document.getElementById('kw').value;我们用一个retu变量获取execute_script的返回值。retu = web.execute_script("document.getElementById('kw').value;")print(retu)然后用print打印出如图
7、运行结果却是retu为None,即说明没有返回值这到底是怎么回事呢?其实我们可以把js代码修改下,确定js代码获取到了id为kw元素的属性值。代码修改如下。retu = web.execute_script("a = document.getElementById('kw').value;window.alert(a)")print(retu)即我们用一个变量接收document.getElementById('kw').value信息,然后再通过弹对话框方式看看是否成功获取。可见js代码是没问题的,问题就出在我们用execute_script运行js代码的时候,怎么把数据返回。
8、事实上,selenium并不是直接把代码嵌入到html文件中,而是以函数的方式。这样就好办了。既然是函数形式,我们只需要在js内加入return语句,返回我们想要的结果即可。retu = web.execute_script("return document.getElementById('kw').value;")print(retu)快看,是不是成功获取到数据了呢?怎么样,学会没?点一波关注吧(*^__^*)