爬虫:尝试通过selenium登录内部oa和IDAP系统并操作

前言:因为公司数据库没有打通,所以只好尝试通过selenium来自动报表拉取,里面主要有2个关键点:
1、打开idap新页面后,需要driver.switch_to_window(driver.window_handles[1]),否则下一个元素会找不到
2、因为IDAP的页面使用了另外的frame,所以必须先切换到新的frame下面才能进行下一步,语句是:driver.switch_to_frame(‘frame_100031’),其中’frame_100031’就是frame的name或id
可惜因为IDAP的兼容性问题,不支持chrome,点到“下一步”就不动了,所以没办法继续研究下去,后续有新进展了再更新

from selenium import webdriver
import time

driver = webdriver.Chrome()
url = "http://www.sh.ctc.com/"
driver.get(url)
time.sleep(3)
try:
    button = driver.find_element_by_xpath(' // *[ @ id = "tipsButton"]')  # 等待3秒点击
    button.click()
except Exception as e:
    print(e)
button = driver.find_element_by_xpath('//*[@id="tab_ul"]/li[2]/span') # 点击“动态码认证”
button.click()
element = driver.find_element_by_xpath('//*[@id="m_userid"]')  # 点击“用户名输入”
element.send_keys('zhanglei1')
element = driver.find_element_by_xpath('//*[@id="m_password"]')  # 点击“密码输入”
element.send_keys('******')
button = driver.find_element_by_xpath('//*[@id="sendsms"]')  # 点击“发送动态码”
button.click()
element = driver.find_element_by_xpath('//*[@id="mobilesec"]')  # 点击“动态码输入”
duanxin = input("请输入短信动态码:")
element.send_keys(duanxin)
button = driver.find_element_by_xpath('//*[@id="form3"]/table/tbody/tr[4]/td/input')  # 点击“登陆”
button.click()
button = driver.find_element_by_xpath('//*[@id="content"]/div[1]/div[3]/div[1]/div[3]/div/div/ul/li[3]/a')  # 点击“我的工作”
button.click()
button = driver.find_element_by_xpath('//*[@id="ns_Z7_IPDA1842LOG820AHUEO4I000S5__ul_zxlj"]/li[1]/a/span/i')  # 点击“IDAP”
button.click()
#因为是新增页面,所以必须要切换,不然会找不到“取数管理”等新元素
driver.switch_to_window(driver.window_handles[1])
button = driver.find_element_by_xpath('//*[@id="nav_idap"]/li[1]/a')  # 点击“取数管理”
button.click()
button = driver.find_element_by_xpath('//*[@id="li100031"]/a')  # 点击“我的取数”
button.click()
time.sleep(5)
#因为IDAP的页面使用了另外的frame,所以必须先切换到新的frame下面才能进行下一步
driver.switch_to_frame('frame_100031')
button = driver.find_element_by_xpath('//*[@id="datagrid-row-r1-2-0"]/td[10]/div/div/a[1]/img')  # 点击“取数复用”
button.click()
# driver.switch_to_frame('Frame_100031')
button = driver.find_element_by_xpath('//*[@id="nextPage"]')  # 点击“下一步”
button.click()
#因为idap对chrome的兼容性不好,无法进行下一步操作了,所以先到此为止,后续再研究

猜你喜欢

转载自blog.csdn.net/weixin_42029733/article/details/84574582