关于什么是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的进程没有杀掉等等。
最后通过测试的代码如下:
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()