Selenium学习笔记

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

--变量
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秒
相关文章
|
JavaScript 搜索推荐 API
Selenium 4|学习笔记
快速学习 Selenium 4
|
前端开发 API 定位技术
Selenium 3|学习笔记
快速学习 Selenium 3
|
JavaScript 前端开发 API
Selenium 2|学习笔记
快速学习 Selenium 2
|
Web App开发 数据采集 前端开发
Selenium 1|学习笔记
快速学习 Selenium 1
|
移动开发 前端开发 JavaScript
Selenium WebDriver API 学习笔记(三):浏览器控制
Selenium WebDriver API 学习笔记(三):浏览器控制
155 0
|
测试技术 API Python
Selenium WebDriver API 学习笔记(二):浏览器控制
Selenium WebDriver API 学习笔记(二):浏览器控制
140 0
|
前端开发 测试技术 API
Selenium WebDriver API 学习笔记(一):元素定位
Selenium WebDriver API 学习笔记(一):元素定位
118 0
|
Web App开发 jenkins Java
Jenkins +selenium(学习笔记三十一)
jenkins+selenium可以做到对web自动化的持续集成。 Jenkins的基本操作: 一、新建视图及job 新建视图: 新建job: 可以选择构建一个自由风格的软件项目或者复制已有的ite...
1730 0
|
XML 数据格式
Selenium学习笔记之外部化相关测试数据---xml
我们也可以用xml来定义一个信息更为丰富的UIMap.xml文件,比如,额外还添加控件所属的页,控件的类型,然后解析构建一个XMLParser类来读取相应的值。 1 2 3 4 5 6 7 8 9 10 ...
774 0

热门文章

最新文章