Selenium2学习笔记

本文介绍了Selenium2的使用技巧,包括检查复选框是否选中、元素的可编辑状态、元素的显示状态、获取属性值以及对话框的处理。还涉及到窗口切换和窗口属性的控制,如最大化窗口,并展示了如何使用Timeouts设置超时时间。此外,提到了EventFiringWebDriver用于在执行测试操作时添加自定义处理和截图功能。
摘要由CSDN通过智能技术生成

   
--变量
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秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mason22

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值