--变量
DECLARE @Msg VARCHAR(300) = '',
        @State INT = 0,
        @Count INT =0

IF @AuditState <> 1 
BEGIN
  SET @State=0
  SET @Msg='Start' 
  SELECT @State State,@Msg Msg
  RETURN
END
SELECT  @Count=Count(*) FROM SM_OrgTree 
    WHERE 
    ItemID LIKE '00100500%' 
    AND UnitID IN ( SELECT UnitID FROM Data_Unit_B01 WHERE D0169='0501')
    AND ItemType ='N'
    AND UnitID = (SELECT UnitID FROM WF_JobStep WHERE JobID=@JobID AND JobStepID=1)
IF @count>0
    BEGIN
    SET @State=0
    SET @Msg='GJKCheck' 
      SELECT @State State,@Msg Msg,@Count Count
      RETURN
      END
ELSE
BEGIN
    SET @State=0
    SET @Msg='SGKCheck' 
      SELECT @State State,@Msg Msg, @State State1,@Count Count
      RETURN
END

Selenium2学习笔记:

2403251191@qq.com1 
广西-谢恒达
201442 173151
123456a

验证复选框是否勾选
    IWebElement checkBox = driver.FindElement(By.Id("pass_loginLite_input_isMem0"));
    bool isSelected = checkBox.Selected;
    Console.WriteLine("是否勾选:" + isSelected);

Enabled/isEnabled( )用于存储input等元素的可编辑状态,
    例如文本框、复选框和单选框的可编辑状态,如果可以编辑,
    则返回true,否则返回false。
    IWebElement textBox = driver.FindElement(By.Id("lst-ib"));
    bool enabled = textBox.Enabled;
    Console.WriteLine("是否可编辑:" + enabled);

有时候,即使元素在页面上看不到了,在使用Ctrl+F查看源代码或使用FindElement命令进行查找时,
     仍然能找到该元素。这是因为该原素偶然在HTML代码中,只是没有显示出来
    (例如该元素的visibility属性为hidden或者display属性为none,它就不会显示到页面上,但它确实存在于该页面),
     所以,这个时候用Displayed/isDisplayed()才能验证该元素是否在页面上显示。
     IWebElement btn = driver.FindElement(By.Name("btnK"));
     bool visiblility = btn.Displayed;
     Console.WriteLine("元素是否显示:" + visiblility);

GetAttribute( )方法用于获取指定属性的值,attributeName为属性的名称。
    IWebElement btn = driver.FindElement(By.Name("btnK"));
    string btnValue = btn.GetAttribute("value");
    Console.WriteLine("Google搜索的value属性为:" + btnValue);

对所有弹出的对话框执行点击确定的操作。
    driver.SwitchTo().Alert().Accept();
    对所有弹出的对话框执行点击取消的操作。
    driver.SwitchTo().Alert().Dismiss();
    Text/getText()用于获取弹出对话框的文本内容。
    driver.SwitchTo().Alert().Text

要在多个窗口之间进行切换,首先必须获取每个窗口的唯一标识符(句柄,
        通过WindowHandles属性(用于C#)/getWindowHandles()(用于Java)
        可以获取所有打开窗口的标识符,并将其以集合的形式返回。
    IWebDriver mainWindow = new FirefoxDriver();
    INavigation navigation = mainWindow.Navigate();
    navigation.GoToUrl(http://www.baidu.com);
    IWebElement btnInMainWindow = mainWindow.FindElement(By.Name("tj_reg"));
    btnInMainWindow.Click();
    System.Collections.Generic.IList<string> handles= mainWindow.WindowHandles;
    for (int i = 0; i < handles.Count; i++)
    {
    Console.WriteLine(handles[i]);
    }
    Console.ReadKey();

新窗口弹出后,可以通过它的标识符(句柄)切换到该窗口,再对该窗口的元素进行操作。

IWebDriver mainWindow = new FirefoxDriver();
    INavigation navigation = mainWindow.Navigate();
    navigation.GoToUrl(http://www.baidu.com);
    IWebElement btnInMainWindow = mainWindow.FindElement(By.Name("tj_reg"));
    btnInMainWindow.Click();
    System.Collections.Generic.IList<string> handles= mainWindow.WindowHandles;
    IWebDriver childWindow = mainWindow.SwitchTo().Window(handles[1]);
    IWebElement tbxInchildWindow = childWindow.FindElement(By.Id("pass_reg_email_0"));
    tbxInchildWindow.SendKeys("12345");

System.Collections.Generic.IList<string> handles = driver.WindowHandles;
    //切换到注册窗口
    driver.SwitchTo().Window(handles[1]);
    System.Threading.Thread.Sleep(3000);
    driver.Close();
    System.Threading.Thread.Sleep(3000);
    //切换到主窗口
    driver.SwitchTo().Window(handles[0]);
    driver.FindElement(By.Name("tj_reg")).Click();
    System.Threading.Thread.Sleep(3000);
    driver.Quit();  //测试结束,关闭所有窗口,driver.Close() 关闭窗口

通过Window属性(适用于C#)/window()方法(适用于Java)可以对当前的窗口进行简单的控制,
       例如查看窗体的坐标和大小,并将其最大化。

可以编写代码,先打开浏览器,输出其坐标和大小,然后将其最大化,再输出其坐标和大小,
      代码如程序清单5-72或程序清单5-73所示。

IWebDriver mainWindow = new FirefoxDriver();
    INavigation navigation = mainWindow.Navigate();
    navigation.GoToUrl(http://www.baidu.com);
    IWindow window = mainWindow.Manage().Window;
    //输出其坐标和大小
    Console.WriteLine("最大化前,当前window在屏幕上的坐标为:" + window.Position.X + "," + window.Position.Y);
    Console.WriteLine("最大化前,当前window在屏幕上的长宽为:" + window.Size.Width + "," + window.Size.Height);
        //最大化窗口
    window.Maximize();

Timeouts()方法会获得Timeouts对象,Timeouts对象包含以下3个方法。
      ImplicitlyWait(),设置脚本在查找元素时的最大等待时间,例如FindElement()和Find Elements()等方法的超时时间。
      SetPageLoadTimeout():页面操作超时时间,例如页面进行跳转或刷新的最大等待时间。
    例如,使用Navigation对象的各个方法,以及在页面执行某操作后发生跳转或刷新)。

SetScriptTimeout(),设置脚本异步执行的超时时间。
          ITimeouts timeouts = driver.Manage().Timeouts();
    //将脚本在查找元素时的最大等待时间设置为0小时0分30秒
    timeouts.ImplicitlyWait(new TimeSpan(0, 0, 30));
    //将页面跳转或刷新的超时时间设置为0小时0分30秒
    timeouts.SetPageLoadTimeout(new TimeSpan(0, 0, 30));
    //将脚本异步执行的超时时间设置为0小时0分30秒
    timeouts.SetScriptTimeout(new TimeSpan(0, 0, 30));

如果想要在执行测试操作时执行自定义的处理或者进行截图,可以使用EventFiring- WebDriver。
      IWebDriver driver = new FirefoxDriver();

OpenQA.Selenium.Support.Events.EventFiringWebDriver eventDriver = new OpenQA.Selenium.Support.Events.EventFiringWebDriver(driver);

可以看到,首先需要创建一个常规的WebDriver实例,然后创建EventFiring WebDriver实例,并将常规的WebDriver实例作为参数传入到EventFiringWebDriver的构造函数中。

在IDE中查看EventFiringWebDriver实例的成员,可以看到,与常规的WebDriver实例相比,它多一些事件

Navigating:导航前事件,定义页面在发生跳转前需要执行的代码。

Navigated:导航后事件,定义页面在发生跳转后需要执行的代码。

NavigatingBack:浏览器后退前事件,定义浏览器在执行后退操作前需要执行的代码。

NavigatedBack:浏览器后退后事件,定义浏览器在执行后退操作后需要执行的代码。

NavigatingForward:浏览器前进前事件,定义浏览器在执行前进操作前需要执行的代码。

NavigatedForward:浏览器前进后事件,定义浏览器在执行前进操作后需要执行的代码。

FindingElement:查找元素前事件,定义Selenium在查找元素前需要执行的代码。

FindElementCompleted:找到元素后事件,定义Selenium在找到元素后需要执行的代码。

ElementClicking:单击元素前事件,定义Selenium在单击元素前需要执行的代码。

ElementClicked:单击元素后事件,定义Selenium在单击元素后需要执行的代码。

ElementValueChanging:元素值变更前事件,定义Selenium更改元素的值前需要执行的代码。

ElementValueChanged:元素值变更后事件,定义Selenium更改元素的值后需要执行的代码。

ScriptExecuting:脚本执行前事件,定义脚本执行前需要执行的代码。

ScriptExecuted:脚本执行后事件,定义脚本执行后需要执行的代码。

ExceptionThrown:异常事件,定义在使用Selenium测试发生异常时需要执行的代码。

//*[@id="A0101"]

assertLocation(判断当前是在正确的页面)、

assertTitle(检查当前页面的title是否正确)、

assertValue(检查input的值, checkbox或radio,有值为”on”无为”off”)、

assertSelected(检查select的下拉菜单中选中是否正确)、

assertSelectedOptions(检查下拉菜单中的选项的是否正确)、

assertText(检查指定元素的文本)、

assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、

assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、

assertAttribute(检查当前指定元素的属性的值)、

assertTable(检查table里的某个cell中的值)、

assertEditable(检查指定的input是否可以编辑)、

assertNotEditable(检查指定的input是否不可以编辑)、

assertAlert(检查是否有产生带指定message的alert对话框)、

waitForElementPresent (等待检验某元素的存在。为真时,则执行。)

System.Threading.Thread.Sleep(3000);  //延迟3秒

Selenium2学习笔记相关推荐

  1. python+selenium2学习笔记webdriver-23其他内容

    本节留着以后补充东西,另外webdriver的内容也到此告一段落. 1.获取链接信息 from selenium import webdriver driver = webdriver.Firefox ...

  2. splinter 学习笔记

    splinter 学习笔记 1.install Install Python In order to install Splinter, make sure Python is installed. ...

  3. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  4. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  5. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  7. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  8. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  9. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

最新文章

  1. ZieglerNicholas PID GUI控制设计
  2. vue状态管理存取数据_vue状态管理vuex从浅入深详细讲解
  3. Python-OpenCV 笔记5 -- 几何变换(Geometric Transformations)
  4. Flink + Iceberg,腾讯百亿级实时数据入湖实战
  5. 如何更改 Mac 上的光标颜色
  6. 微型计算机物理地址转换,微型计算机及接口技术2015年4月真题试题(04732)
  7. Java中常用的4个Json库,哪个性能更牛逼?
  8. 7-107 找出三位水仙花数 (15 分)
  9. 浅谈 NLP 细粒度情感分析(ABSA)
  10. python项目代做_ECS 170代做、代写Python、data代做、代做Python程序代写Web开发|代写Database...
  11. HTML中构建自动伸缩的表格Table
  12. moodle php代码解读_Moodle插件开发笔记
  13. 【蓝桥杯】大臣的旅费(C++) (DSF+树的最大直径)
  14. 分享5款免费且超赞的SSH工具
  15. 最长公共子串——python
  16. 如何用photoshop做24色环_教大家用PS画色轮图
  17. HDU 3065 病毒侵袭持续中 【AC自动机模版题】
  18. 简单选择排序(Eternallyc)
  19. 略谈“10步天才(10 step)思维模型”
  20. 知名卸载软件Revo Uninstaller Pro挑战Deep Freeze卸载动画视频教程

热门文章

  1. 最新友盟微信,QQ与微博分享集成方案
  2. proe5.0管道管线设计教程
  3. 【多线程】优雅使用线程池结合CompletableFuture实现异步编排
  4. Javascript学习笔记(犀牛书1、2章)
  5. 一次神坑:Qt的QFile新建文件
  6. 基于javaweb+mysql的校园招聘平台招聘管理系统(平台、企业、用户)
  7. 武大计算机博士很难毕业,武大的博士好考吗?好毕业吗?
  8. 查看交换机每个端口连接的mac从而知道连接的IP计算机
  9. oracle脏读查询,没有进行commit操作的数据是否能被查询到,关于oracle的脏读和隔离级别...
  10. 维数定理(手推!):证明dim(v1)+dim(v2) = dim(v1+v2) + dim(v1∩v2)