C# Selenium学习(三)-获取网页属性

来源:互联网 发布:车牌位置标识数据集 编辑:程序博客网 时间:2024/06/07 10:48

C# Selenium学习(三)

上一节是操作部分,这一节主要是纪录获取信息的部分。如果有交流或错误,请在下面评论区留言哦。

获取基本信息

基本思想是一样的。大部分都是定位后直接获取属性。只有一部分信息是要掉用方法去查找的。

1.Title标题

在创建对象、打开网页后,调用IWebDriver测试器对象的Title属性就可以获取了。如下代码:
 IWebDriver selenium = new ChromeDriver( ); selenium.Navigate( ).GoToUrl( "http://tieba.baidu.com/f/search/adv" ); Console.WriteLine(selenium.Title);//输出标题名

2.Url链接

用法一样的。贴代码
 IWebDriver selenium = new ChromeDriver( ); selenium.Navigate( ).GoToUrl( "http://tieba.baidu.com/f/search/adv" ); Console.WriteLine(selenium.Url);//输出链接

3.Text元素的文本值

用法基本一样,只是要在定位后才能获取到的属性。如下代码:
            IWebDriver selenium = new ChromeDriver( );            selenium.Navigate( ).GoToUrl( "http://www.baidu.com" );            IWebElement web = selenium.FindElement( By.Id( "setf" ) );            Console.WriteLine(web.Text);//输出元素标记中夹的信息

4.Selected勾选情况、TagName标记名标、Enabled编辑状态、Displayed显示状态

    这两个都是属性,在定位后获取属性就行了。代码后上面的差不多,只是属性名不一样而已。在C#中,都是获取属性来获取我们想要的信息。具体作用如下:1.Selected属性是用来获取单选或复选的勾选情况的。选中就是true2.TagName属性是用来获取元素用的是那个HTML标记的。3.Enabled属性是用来获取input等一些能编辑的元素,比如文本框这些,用来判断是不是可以背编辑。4.Displayed属性是用来获取元素是不是存在的。有时一些元素是可以让他存在但不显示的,可以用这个属性来检查是不是存在的。

5.GetAttribute()获取标签的属性

在定位后,获取标签里属性的值。比如ID啊 value啊等各种标签属性。这里就不展示了

6.弹出对话框的处理

首先,要先了解三种对话框:Alert、Confirmation以及Prompt。1.Alert警告对话框只有一个确定按钮,如下图:

这里写图片描述

2.Confirmation确认对话框需要选择。有确认和取消两个按钮。如图:

这里写图片描述

3.Prompt输入对话框。有输入框的Confirmation。如图:

这里写图片描述

Selenium 1是JvaaScript脚本注入,对话框的测试是“预处理”的,所以在1时代,是看不到对话框的。Selenium 2是针对各个不同的浏览器开发的,所以是能看到对话框的。下面我们来测试一波。因为网上没有三种对话框都存在的网页,我们自己写一下:
<html>    <head>        <title>这是标题</title>    </head>    <body>        <input type="button" onclick="alert('这是Alert');" value="Alert" /><br/>        <input type="button" onclick="confirm('这是confirm');" value="confirm" /><br/>        <input type="button" onclick="prompt('这是Prompt');" value="prompt" /><br/>    </body></html>

这里写图片描述

下面进行测试:

            IWebDriver selenium = new FirefoxDriver( );            selenium.Navigate( ).GoToUrl( "file:///D:/Desktop/test.html" );            IWebElement web = selenium.FindElement( By.XPath( "//input[1]" ) );            web.Click( );            Console.WriteLine( selenium.SwitchTo( ).Alert( ).Text );//在接收消息前输出            System.Threading.Thread.Sleep( 1000 );            selenium.SwitchTo( ).Alert( ).Accept( );            IWebElement web2 = selenium.FindElement( By.XPath( "//input[2]" ) );            web2.Click( );            System.Threading.Thread.Sleep( 1000 );            Console.WriteLine( selenium.SwitchTo( ).Alert( ).Text );//在接收消息前输出            selenium.SwitchTo( ).Alert( ).Accept( );            IWebElement web3 = selenium.FindElement( By.XPath( @"html/body/input[3]" ) );            web3.Click( );            selenium.SwitchTo( ).Alert( ).SendKeys( "这是输入的内容" );            Console.WriteLine( selenium.SwitchTo( ).Alert( ).Text );//在接收消息前输出
   程序成功调出了三个按钮。同时SendKeys()方法给第三个输入对话框里赋值了。这里有一点理解上的:给对话框输入信息是在浏览器层面操作,所以要用测试器对象来发送信息而不是元素对象。   SwitchTo( ).Alert( )的解释是:SwitchTo( )方法是调用ITargetLocator对象,这个对象是用来发送不同的命令到不同的窗口的。然后再用Alert()方法调用IAlert对象来处理和对话框相关的内容。所以SendKeys()方法和Text属性都在IAlert下面。text属性是获取里面的文本信息,不是标题信息。  下一节再纪录怎么处理多窗口
0 0
原创粉丝点击