您的位置:首页 > 编程语言 > Python开发

python爬虫,selenium使用,Firefox-chrome-IE问题解决方法,selenium的基本操作

2016-11-07 10:48 1546 查看
关于什么是selenium和为什么使用selenium,自己搜资料。

下面是比较好的系统介绍:
https://selenium-python.readthedocs.io/installation.html https://seleniumhq.github.io/selenium/docs/api/py/api.html#selenium
安装的时候,直接anaconda或者

pip install selenium


然后试一下下面的程序:

<span style="font-size:14px;">from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Ie()
driver.get("http://www.baidu.com")
driver.close()</span>
常常会发现下面的错误:

selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.
selenium.common.exceptions.WebDriverException: Message: 'IEDriver executable needs to be available in the path.

selenium.common.exceptions.WebDriverException: Message: "Can't load the profile.

修复办法参考:

第一步:下载chrome或者ie的driver,地址:
http://docs.seleniumhq.org/download/ http://download.csdn.net/detail/mmc2015/9674909
第二步:设置对应的环境变量等信息:

from selenium import webdriver
ChromeDriverServer = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
os.environ["webdriver.chrome.driver"] = ChromeDriverServer    
browser = webdriver.Chrome(executable_path=ChromeDriverServer)
browser.get(http://stackoverflow.com)
browser.quit()

IE类似:

        IEDriverServer = "C:\Program Files\Internet Explorer\IEDriverServer_64.exe"

        os.environ["webdriver.ie.driver"] = IEDriverServer

        browser = webdriver.Ie(IEDriverServer)

其他错误:

没有修改IE的保护模式设置导致,通常看到报错信息如下:
selenium.common.exceptions.WebDriverException: Message: 'Unexpected error launching Internet Explorer.
Mode settings are not the same for all zones. 
Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.'
解决办法是IE选项设置的安全页中,4个区域的启用保护模式的勾选都去掉(或都勾上)
其他可能的问题有IE的代理服务器设置被打勾了需要去掉勾选,进程里有IEDRIVERSERVER.EXE的进程没有杀掉等等。

IEDriverServer.exe, chromedriver.exe 网上有说:
将 IEDriverServer.exe, chromedriver.exe  放到环境变量path路径的目录里或把他所在的目录加到path环境变量中。
该方法待定,试了一下没有成功-待研究

最后通过测试的代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os

IEDriverServer = "C:\Program Files\Internet Explorer\IEDriverServer_x64.exe"
os.environ["webdriver.ie.driver"] = IEDriverServer

browser = webdriver.Ie(IEDriverServer)
browser.get("http://www.baidu.com")

browser.close()
print "done..."


基本操作参考:https://my.oschina.net/yangyanxing/blog/280871?p=1

#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #引入ActionChains鼠标操作类
from selenium.webdriver.common.keys import Keys #引入keys类操作
import time

def s(int):
time.sleep(int)
browser = webdriver.Chrome()
browser.get('http://www.baidu.com')
print '现在将浏览器最大化'
browser.maximize_window()
text = browser.find_element_by_name('tj_duty').text
print text #打印备案信息

browser.find_element_by_id('kw1').send_keys(u'杨彦星')
print browser.find_element_by_id('kw1').get_attribute('type')
print browser.find_element_by_id('kw1').size #打印输入框的大小
browser.find_element_by_id('su1').click()
time.sleep(3)

print '现在我将设置浏览器为宽480,高800显示'
browser.set_window_size(480,800)
browser.get('http://m.mail.10086.cn')
time.sleep(3)

print '现在我将回到刚才的页面'
browser.maximize_window()
browser.back()
time.sleep(3)

print '现在我将回到之前的页面'
browser.forward()
time.sleep(5)
print '现在我将打开杨彦星的网站进行json搜索'
browser.get('http://www.yangyanxing.com')
browser.find_element_by_xpath(".//*[@id='ls']").send_keys(u'json')
browser.find_element_by_xpath(".//*[@id='header']/div[1]/div/form/input[2]").click()
time.sleep(5)
browser.quit()

browser = webdriver.Chrome()

print '以下将以登录人人网来进行上面的综合应用'
browser.get('http://www.renren.com/SysHome.do')
browser.find_element_by_id('email').clear()#这个是以id选择元素
browser.find_element_by_id('email').send_keys('email')
browser.find_element_by_id('email').send_keys(Keys.BACK_SPACE)
time.sleep(2)
browser.find_element_by_id('email').send_keys('m')
s(2)
browser.find_element_by_id('email').send_keys(Keys.CONTROL,'a')
s(2)
browser.find_element_by_id('email').send_keys(Keys.CONTROL,'x')#剪切掉里面的内容
s(2)
browser.find_element_by_id('email').send_keys(Keys.CONTROL,'v') #重新输入进去
s(2)
browser.find_element_by_name('password').clear()#这个是以name选择元素
browser.find_element_by_name('password').send_keys('password')
#browser.find_element_by_xpath(".//*[@id='login']").click()#这个是以xpath选择元素
browser.find_element_by_xpath(".//*[@id='login']").send_keys(Keys.ENTER) #这里通过点击Enter键来登录
browser.maximize_window()
article = browser.find_element_by_link_text(u'周碧华:社科院出现内鬼意味着什么?')
ActionChains(browser).move_to_element(article).perform()#将鼠标移动到这里,但是这里不好用
ActionChains(browser).context_click(article).perform()
time.sleep(5)

browser.quit()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐