selenium:自动化利器

2016-05-17 blog

selenium是一个非常好的自动化工具。
我们公司的网站广告系统的排期快要到期了,1700多个排期需要手动将时间往后延。解决方法有2个:

  1. 从数据库里面直接更新。可是这是采用的好耶的广告系统,好耶的广告团队被拆了,对方不提供这样的维护。
  2. 人工手动点击更新时间。

我计算了下,每个排期更新需要2分钟,1700*2=5400,合计80个小时,10个工作日......
为了降低自己的工作量,让工作没那么白痴,只好自己想解决方案了,selenium就派上用处了。其实只要把步骤处理好,自动化还是蛮方便的,就像按键精灵一样点点点。
以下为本次处理的学习关键点:

首先强烈推荐:非官方的python文档地址

selenium执行js代码:

driver.execute_script(js_code)

使用css selector,此处为js代码,因为有些css selector通过selenium的find方法查找不到,但是能通过js的css selector查找到。

// javascript
document.querySelector('#dateperiod > div.pqcnt > div:nth-child('+x+') > div.rf_formleft.l > img:nth-child(3)')

selenium切换iframe、切换回默认网页、切换tab.

#切换到iframe
driver.switch_to_frame("TB_iframeContent") #切换iframe,里面为iframe id.

#切换回默认网页
driver.switch_to_default_content()

#切换到其他tab
#方法1:通过windowName,可惜这个基本没有
driver.switch_to_window("windowName")

#方法2:通过handle.
#driver.window_handles为一个数组,比如driver有5个tab,则内容为[0,4,3,2,1],可以通过比较tab的title来确定切换到哪个title

for handle in driver.window_handles:
    driver.switch_to_window(handle)
    print driver.title

selenium查找

driver.find_element_by_name()
driver.find_element_by_xpath()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_tag_name()
driver.find_element_by_class_name()
driver.find_element_by_css_selector()

selenium等待网页加载

#Implicit Waits

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")
Comments
Write a Comment