selenium是进行web自动化测试的一个工具,支持C,C++,Python,Java等语言,他能够实现模拟手工操作浏览器,进行自动化,通过webdriver驱动浏览器操作,我使用的是chrome浏览器,下载chrome  webdriver 放到python的安装目录。

参考连接:

https://pypi.python.org/pypi/selenium

http://selenium-python.readthedocs.io/api.html

http://www.cnblogs.com/fnng/p/3160606.html

from selenium import webdriver
import time
import string
import datetime def usage():
print("*********************************************************************")
print("欢迎使用Amazone差评神器,Enover保留版权,作者:Anker 日期:2016-12-18")
print("*********************************************************************") def genSearchDate():
now = datetime.datetime.now()
print("当前的日期是:%s/%s/%s" % (now.day, now.month, now.year%2000)) #计算当前月的的日期范围
dayarr = []
if now.day <= 10 :
dayarr = [10,1]
elif now.day/10 <= 2:
dayarr = [now.day,10,1]
else:
dayarr = [now.day,20,10,1] #判断是否闰年
day2 = 0
if (now.year%4 == 0 and now.year%100 != 0) or now.year%400 == 0:
day2 = 29
else:
day2 = 28 months=[[0,0],[31,20,10,1,],[day2,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1]] mon=now.month
searchDate=[]
while (mon > 0):
if (mon == now.month):
tmp = dayarr
else:
tmp = months[mon]
for d in range(0,len(tmp)-1):
if d==0:
enddate='%s/%s/%s' % (mon, tmp[d], now.year%2000)
else:
enddate='%s/%s/%s' % (mon, tmp[d]-1, now.year%2000)
begdate='%s/%s/%s' % (mon, tmp[d+1], now.year%2000)
val=[begdate,enddate]
searchDate.append(val)
mon=mon-1
#print(searchDate)
return searchDate #登陆亚马逊
def loginAmazone(driver):
driver.get("https://sellercentral.amazon.com")
driver.find_element_by_id('ap_email').send_keys('xxxxx')
driver.find_element_by_id('ap_password').send_keys('xxxxx')
driver.find_element_by_name('signIn').submit() #设置查询条件 ASIN 和 时间
def searchProcess(driver, asin, begdate,enddate):
driver.get("https://sellercentral.amazon.com/gp/orders-v2/search/ref=ag_myosearch_apsearch_myo")
driver.find_element_by_id('_myoSO_searchTypeSelect').send_keys('ASIN')
driver.find_element_by_id('_myoSO_searchKeyword').send_keys(asin) driver.find_element_by_id('_myoSO_SearchOption_exactDates').click()
driver.find_element_by_id('exactDateBegin').clear()
driver.find_element_by_id('exactDateBegin').send_keys(begdate)
driver.find_element_by_id('exactDateEnd').clear()
driver.find_element_by_id('exactDateEnd').send_keys(enddate) driver.find_element_by_id('_myoSO_SearchButton').click()
time.sleep(2) #设置每页显示50个
def setpage50(driver):
driver.find_element_by_xpath('//option [@value="50"]').click() # click
driver.find_element_by_xpath('//form [@onsubmit="return MYO.LO.DoAjaxSearchCall( this );"]').submit()
time.sleep(2)
driver.find_element_by_id('_myoLO_saveDefaultSearchCheckBox').click() #计算记录个数
def countPage(source):
pattern='</strong> of <strong>'
pos1=source.find(pattern)
beg=pos1+len(pattern)
pos2=source.find('</strong>',pos1+len(pattern))
total=int(source[beg:pos2]) page=total%50
if page==0:
page=total/50
else:
page=int(total/50)+1
print("订单总数为:%s,共计%s页" % (total, page))
return page #翻页 jump to page
def jumppage(driver, page, custid):
rc=False
for index in range(1,page):
print("正在查找第%s页" % index)
elements = driver.find_elements_by_xpath('//input [@maxlength="7"]')
elements[1].find_element_by_xpath('//input [@name="currentPage"]').send_keys(str(index))
driver.find_element_by_id('_myoSO_GoToPageForm_1').submit()
time.sleep(4)
source=driver.page_source
pos=source.find(custid)
if pos != -1:
print('终于找到了,查找记录如下:')
print(source[pos-270:pos+24])
rc=True
break
return rc def searchBadReview(driver, asin, custid, searchDate):
for i in range(0, len(searchDate)):
tmpDate=searchDate[i]
begdate=tmpDate[0]
enddate=tmpDate[1]
print('==============================================')
print("开始找%s到%s的订单" %(begdate, enddate))
searchProcess(driver, asin, begdate, enddate)
setpage50(driver)
source=driver.page_source
page=countPage(source)
rc = jumppage(driver, page, custid)
if rc == True:
break #主函数
def main():
usage() #输入参数
asin = input("请输入ASIN:")
print("你输入的ASIN是: ", asin)
custid = input("请输入Customer profile id:")
print("你输入的内容是: ", custid)
searchDate=genSearchDate()
#print("查找时间范围如下:")
#print(searchDate) #默认浏览器行为
print('==============================================')
print("开始打开浏览器,并登陆Amazone seller center")
driver = webdriver.Chrome()
loginAmazone(driver)
time.sleep(1)
searchBadReview(driver, asin, custid, searchDate)
driver.quit()
time.sleep(60) if __name__ == "__main__":
main()

  

  

使用python selenium webdriver模拟浏览器的更多相关文章

  1. python selenium webdriver处理浏览器滚动条

    用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium. ...

  2. Python Selenium Webdriver常用方法总结

    Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...

  3. Python+Selenium自动化 模拟鼠标操作

    Python+Selenium自动化 模拟鼠标操作   在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就 ...

  4. selenium WebDriver 对浏览器标签页的切换

    关于selenium WebDriver 对浏览器标签页的切换,现在的市面上最新的浏览器,当点击一个链接打开一个新的页面都是在浏览器中打开一个标签页,而selenium只能对窗口进行切换的方法,只能操 ...

  5. Python+Selenium自动化-模拟键盘操作

    Python+Selenium自动化-模拟键盘操作   0.导入键盘类Keys() selenium中的Keys()类提供了大部分的键盘操作方法:通过send_keys()方法来模拟键盘上的按键. # ...

  6. Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退

    Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退   1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...

  7. Python使用mechanize模拟浏览器

    Python使用mechanize模拟浏览器 之前我使用自带的urllib2模拟浏览器去进行訪问网页等操作,非常多站点都会出错误,还会返回乱码.之后使用了 mechanize模拟浏览器,这些情况都没出 ...

  8. Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接

    今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...

  9. python selenium webdriver入门基本操作

    python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...

随机推荐

  1. [ASE]sprint2 总结 & sprint3计划

    第二个sprint半圆满的结束了, 经历了四周之后我们将整个的框架搭建好,并且能够正常的游戏对战,破坏场景,聊天…… 但是正如老师所述,缺乏亮点. 不过大家都是第一次做,完全把他当成一个工程来一点一点 ...

  2. Salesforce + AngularJS + Bootstrap

    也可以分成三步: 1. 添加css和js引用: <apex:stylesheet value="https://maxcdn.bootstrapcdn.com/bootstrap/3. ...

  3. C++11新特性总结 (一)

    1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++1 ...

  4. 【Bugly干货】关于 Android N 那些你不知道的事儿

    今年3月,Google 破天荒提前半年发布了 Android N 开发者预览版.当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门中(雾)兴冲冲刷了 Android ...

  5. 网页集成paypal支付

    在网站中集成paypal支付有两种方式: 1.通过paypal账户的按钮创建工具 进入paypal 商户账号,选择创建按钮工具,有包括添加到购物车.购买.租用三类按钮. 之后会生成一段代码,直接将代码 ...

  6. 新版markdown功能发布!支持github flavored markdown!

    让大家久等了!新版markdown功能一直拖到今天才发布,很是愧疚...但不管怎么样,总算发布了! 今年1月份发布第一版markdown功能之后,很多园友反馈说做得很烂,我们综合大家的反馈之后发现不仅 ...

  7. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)

    前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...

  8. 记录排查解决Hubble.Net连接Oracle数据库建立镜像库数据丢失的问题

    起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...

  9. Xamarin 技术全解析

    Xamarin 是一套基于C#语言的跨平台移动应用开发工具,今年2月份微软宣布收购Xamarin,而后在4月份进行的Build大会上微软宣布将会在各个版本的Visual Studio中免费提供Xama ...

  10. Jetty 9 源码分析 Connector及Server类(一)

    本文的源码基于Jetty9,主要分析了Jetty 的Connector与Server类间在Jetty启动过程中的一些细节.Jetty9 对以前的Connector体系进行了重构, 结构与6和7都不同, ...