selenium使用心得

selenium使用心得

selenium环境搭建:

  • firefox49.02;geckodriver-v0.15.0;selenium3.7.0
  • python2.7.8环境
    由于项目限制,所以用的firefox49.02版本,因为版本问题,需要下载一个驱动才可以运行,驱动的版本比较多,试过16和15版本,最终还是v0.15.0版本和这个版本的firefox搭配使用最好,selenium也没有使用最新版本,而是用的3.7.0。使用这套系统下来可以成功跑通。

遇到问题

在使用过程中,发现页面中通过xpath寻找时,总是会跳到另外一个控件上,后面发现两个控件的xpath完全一样。但是使用last或者父节点的方式也无法找到该控件。最后打开firefox里面的查看器,通过整个网页布局一层一层往下看,发现需要点击的那个控件是在里层的一个新html上,通过两层iframe才可以找到
selenium使用心得_第1张图片
从图中可以看到需要点击的那个按钮是在整个网页的第二层iframe里面,两层iframe名字均为mainFrameContent,所以我这边就调用了两次,然后进入最后这个框里面实现点击该button的作用

    browser.switch_to_default_content()
    #切到摄像机
    browser.switch_to_frame("mainFrameContent")
    browser.find_element_by_xpath("html/body/div[2]/ul/li[2]/a").click()
    time.sleep(2)
    #选择添加
    browser.switch_to_frame("mainFrameContent")
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div[1]/div[2]/button[1]").click()

整体代码:

# coding: utf-8 
from selenium import webdriver 
from selenium.webdriver.support.select import Select
import time

browser = webdriver.Firefox() 
browser.get("http://192.168.10.77:9080/portal/page/configurations.html#menu1/deviceMgr")
time.sleep(2)
browser.find_element_by_id("username").click()
browser.find_element_by_id("username").send_keys("admin") 
browser.find_element_by_id("passwordTxt").click()
browser.find_element_by_id("passwordTxt").send_keys("suntek")
browser.find_element_by_id("register-submit-btn").click()
time.sleep(2)
browser.find_element_by_xpath("//*[@id='config-menu1']/ul/li[2]/a").click()
time.sleep(2)
for i in range(10000):
    browser.switch_to_default_content()
    #切到摄像机
    browser.switch_to_frame("mainFrameContent")
    browser.find_element_by_xpath("html/body/div[2]/ul/li[2]/a").click()
    time.sleep(2)
    #选择添加
    browser.switch_to_frame("mainFrameContent")
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div[1]/div[2]/button[1]").click()
    #进入添加界面
    browser.switch_to_default_content()
    time.sleep(2)
    browser.switch_to_frame("mainFrameContent")
    browser.switch_to_frame("mainForm")
    #设备类型选择IPC
    browser.find_element_by_id("ipcRadio").click()
    # browser.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/dl/dd[1]/label[3]").click()
    #cammerName
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/dl/dd[3]/input").click()
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/dl/dd[3]/input").send_keys(i)
    #厂商
    chang = browser.find_element_by_xpath(".//select[@id='VENDORID']")
    Select(chang).select_by_value('1')
    #存储空间
    store = browser.find_element_by_xpath(".//select[@id='STOREID']")
    Select(store).select_by_value('1')
    #转发路由
    vdu_route_id = browser.find_element_by_xpath(".//select[@id='VDU_ROUTE_ID']")
    Select(vdu_route_id).select_by_value('1')
    #用户名
    browser.find_element_by_id("USERNAME").click()
    browser.find_element_by_id("USERNAME").send_keys("admin")
    #密码
    browser.find_element_by_id("PASSWORD").click()
    browser.find_element_by_id("PASSWORD").send_keys("123456")
    #设备ip
    browser.find_element_by_id("SERVERIP").click()
    browser.find_element_by_id("SERVERIP").send_keys("192.168.68.21")
    #端口
    browser.find_element_by_id("PORT").click()
    browser.find_element_by_id("PORT").send_keys("80")
    #码流类型
    STREAMTYPE = browser.find_element_by_xpath(".//select[@id='STREAMTYPE']")
    Select(STREAMTYPE).select_by_value('0')
    #关联PG模块
    PG_MODULE_ID = browser.find_element_by_xpath(".//select[@id='PG_MODULE_ID']")
    Select(PG_MODULE_ID).select_by_value('EC6CB38DBE4524842101')
    #连接协议
    CONN_PROTOCAL = browser.find_element_by_xpath(".//select[@id='CONN_PROTOCAL']")
    Select(CONN_PROTOCAL).select_by_value('2')
    #传输协议
    TRANS_MODE = browser.find_element_by_xpath(".//select[@id='TRANS_MODE']")
    Select(TRANS_MODE).select_by_value('1')
    #HTTP端口
    browser.find_element_by_id("HTTPPORT").click()
    browser.find_element_by_id("HTTPPORT").send_keys("8")
    #RTSP端口
    browser.find_element_by_id("RTSPPORT").click()
    browser.find_element_by_id("RTSPPORT").send_keys("5")
    #取流协议
    STREAM_PROTOCAL = browser.find_element_by_xpath(".//select[@id='STREAM_PROTOCAL']")
    Select(STREAM_PROTOCAL).select_by_value('1')
    #产品型号
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/dl/dd[47]/input").click()
    browser.find_element_by_xpath("html/body/div[1]/div[2]/div/div[1]/dl/dd[47]/input").send_keys("123")
    #点击保存
    browser.find_element_by_id("submitBtn").click()
    time.sleep(3)
#browser.quit() 

你可能感兴趣的:(selenium)