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才可以找到
这里写图片描述
从图中可以看到需要点击的那个按钮是在整个网页的第二层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() 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium是一个用于自动化浏览器操作的工具,它可以模拟用户在浏览器中的行为,例如点击、输入文本、提交表单等。Selenium可以用于Web应用程序的功能测试、自动化脚本编写、数据抓取等场景。 Selenium支持多种编程语言,包括Java、Python、C#等。下面以Python为例,介绍一下Selenium使用步骤: 1. 安装Selenium库:在Python环境中使用pip命令安装Selenium库,命令如下: ``` pip install selenium ``` 2. 下载浏览器驱动:Selenium需要与特定浏览器配合使用,所以需要下载对应浏览器的驱动程序。常见的浏览器驱动有ChromeDriver、GeckoDriver(Firefox)和EdgeDriver(Edge)等。下载对应浏览器版本的驱动,并将驱动程序所在路径添加到系统环境变量中。 3. 创建WebDriver对象:在Python脚本中导入selenium库,并创建一个WebDriver对象,指定使用的浏览器和驱动程序。例如,使用Chrome浏览器和ChromeDriver驱动的示例代码如下: ```python from selenium import webdriver # 创建Chrome浏览器的WebDriver对象 driver = webdriver.Chrome() ``` 4. 打开网页:使用WebDriver对象的`get()`方法打开指定的网页。例如,打开百度首页的示例代码如下: ```python driver.get("https://www.baidu.com") ``` 5. 进行操作:使用WebDriver对象提供的方法进行各种操作,例如查找元素、点击按钮、输入文本等。常用的方法有`find_element_by_xxx()`系列方法用于查找元素,`click()`方法用于点击元素,`send_keys()`方法用于输入文本等。 6. 关闭浏览器:使用WebDriver对象的`quit()`方法关闭浏览器。 以上是Selenium的基本使用步骤,你可以根据具体需求进行更多的操作和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值