selenium操作

本文介绍了浏览器自动化测试框架Selenium,包括其入门操作,如创建谷歌Driver实例、打开页面、与页面交互、执行js等,还提到了使用中遇到的问题及解决办法。此外,讲解了将Selenium集成到Scrapy的方法,以及动态网页开发中Selenium在无界面环境的操作。

1,浏览器自动化测试框架selenium

pip install selenium

selinum是api接口而已,真正调用的还是浏览器,需要浏览器的driver完成

下载谷歌driver,并放到谷歌浏览器的可执行文件下边

使用from selenium import webdriver,在run的时候却出现ImportError: cannot import name webdriver的提示
原因如下,我新建的名称叫selenium.py,导致Python会先导入这个文件,然后再导入标准库里面的selenium.py

2,selenium入门

<1>创建谷歌Driver实例

 driver = webdriver.Chrome()

<2>打开一个页面,调用get方法 driver.get(“http://www.google.com”)
webdriver将等待,直到页面全部加载完毕(其实是等到onload方法执行完毕)

<3>与页面交互
查找元素:

<input type="text" name="passwd" id="passwd-id" />
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")

文本框输入内容;

element.send_keys("some text")

<4>执行js

execute_script(script, *args)

browser.execute_script(“window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;”)

eg:模拟人人网登录

from selenium import webdriver

browser = webdriver.Chrome(executable_path="E:\Google\Chrome\Application\chromedriver.exe")
browser.get("http://renren.com/")
browser.find_element_by_id("email").send_keys("15536307338")
browser.find_element_by_id("password").send_keys("zh179883")
browser.find_element_by_id("login").click()

问题:有时候找不到对应元素是因为页面还未加载完就进行操作了
可以sleep等待加载完成time.sleep(10)

3,chromdriver不加载图片
#add_experimental_option添加实验选项

chrom_opt = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrom_opt.add_experimental_option("prefs",prefs)
browser = webdriver.Chrome(chrome_options=chrom_opt,executable_path="E:\Google\Chrome\Application\chromedriver.exe")
browser.get("http://taobao.com/")

3,集成到scrapy

selenium下载后,就不用下载器下载了(将它写进download middleware)

使其不用每次打开chrome:
调用super方法,这样chrom就属于这个类了,而不是另起一个chrom

scrapy关闭,但chorme未关闭:
如何在中间件里调用spider.close?既然不是每个页面都用chrome,那么可以把他放到spider中

信号:(spider close)爬虫退出

连接信号
关闭chrome

dispatcher.connect(self.spider_closed, signals.spider_closed)

def spider_closed(self, spider):
        #当爬虫退出的时候关闭chrome
        print ("spider closed")
        self.chrome.quit()

5,动态网页开发,需要有界面,但python为我们提供了无界面的环境(linux)

pip install pyvirtualdisplay

from pyvirtualdisplay import Display
display = Display(visable = 0,size = (800,600))
display.start()

然后是selenium操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值