`
taowen
  • 浏览: 193313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用自然语言的语法分析Selenium脚本

阅读更多
下面是一段从selenium rc 的官方网站的文档中摘抄出来的代码:

import com.thoughtworks.selenium.*;
import junit.framework.*;
public class GoogleTest extends TestCase {
    private Selenium sel;
    public void setUp() {
        sel = new DefaultSelenium("localhost",
            4444, "*firefox", "http://www.google.com");
        sel.start();
    }
    
    public void testGoogle() {
        sel.open("http://www.google.com/webhp");
        sel.type("q", "hello world");
        sel.click("btnG");
        sel.waitForPageToLoad("5000");
        assertEquals("hello world - Google Search", sel.getTitle());
    }
    
    public void tearDown() {
        sel.stop();
    }
}


如果换成自然语言该怎么说?我想用中文应该是这样的:

打开位于http://www.google.com/webhp的网页
在q文本框中输入hello world
点击btnG按钮
等待页面载入5分钟
检查页面标题是不是hello world - Google Search


那么这些句子的语法是怎么样的呢?

【谓语】打开【定语】位于http://www.google.com/webhp的【宾语】网页
【状语】在q文本框中【谓语】输入【宾语】hello world
【谓语】点击【定语】btnG【宾语】按钮
【谓语】等待【宾语】页面载入【补语】5分钟(对于此句,我不确认,请语文好的人士来指教)
【谓语】检查【宾语】页面标题是不是hello world - Google Search(句子做宾语?同样求指教)


虽然我的语文老师看到这样的分析估计要气得吐血的。但是,没关系。我们还是能够看出一些规律。

首先没有主语。那么主语是什么?暗含的都是这段程序的执行者,其实就是“计算机”,或者说“CPU”。所以,程序代码在自然语言语法分析之后都是缺少主语的。那么在英语和中文这样的主谓宾句式的语言中,顶在最前面的就是谓语,除了偶尔会因为中文习惯把状语放在前面做修饰。

其次,这些句子都是祈使句。句子一般分为陈述句,疑问句,祈使句,感叹句。这些句子句式相同是由于这些句子最终都是翻译为计算机指令有关。而计算机指令都是一些对CPU动作的命令。既然是操纵CPU的文本,自然都是祈使句了。所以说,从句式角度来讲,程序代码是非常单纯的。

再次,这些句子都是简单句。缺乏很复杂的从句结构。这和selenium缺少循环和分支不无关系。但是即便是在java代码中。我们仍然可以把复杂的句子厘清为简单句的。正如你可以把话说得像绕口令一样,从句套从句,定语套定语。也可以像侯宝林说相声一样。短句接短句。

最后,我们可以发现变量都是出现在定状补的位置上。这就说明句子的骨架是稳定的。只有修饰性成分才是经常变动的。有的时候,写代码的时候调用一个方法,真的有小时候造句的感觉。老师说用“如果……那么……”造句,于是我写下了“if……then……”。

呵呵,不知道是不是大家认同我的观点。
分享到:
评论
10 楼 haha1903 2007-05-14  
温柔一刀 写道
我点击一般的连接,比如:
user.click("link=个人信息");

怎么死活提示:

com.thoughtworks.selenium.SeleniumException: ERROR: Element link=个人信息 not found

这个连接页面上也确实存在

有人遇到过么?

在这句之前加上, user.waitForPageToLoad("1000"); 试试
9 楼 yimlin 2007-03-20  
有关DSL的我的想法是:
1.DSL不必是自然语言,只要像就可以(重复了一遍taowen的话)
2.我们可以对DSL做一些限制,以便消除自然语言二义性。就像SQL一样。
8 楼 taowen 2007-03-19  
我没有打算拿计算机去分析自然语言啊。我和徐x都认为只要把程序写得“像”自然语言就可以了。也就是
自然语言 -> 编程语言(很困难)
编程语言 -> 自然语言(阅读起来像,很容易)
所以这个比较的目的也就是为将来把代码写得更像自然语言找出一些方向。
7 楼 Nicholas_Ding 2007-03-18  
taowen 你可以买本 linguistics 的书看看关于语言的研究。
不要让计算机直接去分析自然语言(有其是中文这种表意极其不明确的语言),这个基本没戏。我觉得徐x的基于语法解析的办法已经是目前最好的形式了。
6 楼 Tin 2007-03-14  
徐X那个封装不是部分弥补了直接用sel的不足?加上点语法糖用起来感觉有点像DSL了。
可惜Selenium IDE录制的东西没有语法糖。
5 楼 xiaohyy 2007-03-02  
selenium ide的自动录制功能 没有IE版的 头痛呀
4 楼 温柔一刀 2007-02-13  
我点击一般的连接,比如:
user.click("link=个人信息");

怎么死活提示:

com.thoughtworks.selenium.SeleniumException: ERROR: Element link=个人信息 not found

这个连接页面上也确实存在

有人遇到过么?
3 楼 dwangel 2007-01-09  
我最喜欢的是 selenium ide的自动录制功能。
2 楼 taowen 2007-01-05  
呵呵,我没有代表任何官方意见啊。我也没有明确的说要做DSL嘛……
公司内部是有与测试有关的动向。但是不是DSL,具体再做啥,没人说得清楚。还在收集意见和建议。不过开发是闭源的,应该没法参加。
给selenium套一层自然语言的外套。徐x已经做过啦。不过我不是很喜欢传统做语法解析的思路。更喜欢以交互式编辑(强大的IDE)来代替语法解析。
验收测试是目前比较公认的一个比较可行的滩头领域。我写这篇文章就是让大家认识到,selenium脚本,虽然也是程序的一种,但是语法结构极其简单。这就是本文的全部意义。
1 楼 firebody 2007-01-05  
以前DSL我胡思乱想了一下,大概想了这么多东西:

目标:
1)  面对不会程序语言的用户

2) 用户用很容易理解的语言描述要做的事情


为了避免思维过于活跃,先把DSL用于验收测试的case设想一下,要做到这点,
有几点需要明确:

1) 良好定义的句子规范 ,词组规范,定义词组Token

2) 支持简单模块的封装(类似method的组织)

框架的作用:

DSL---> 可运行的底层程序语言

不知道 TW是否正在考虑作 关于验收WEB测试的DSL? 底层框架是 WATIR 或者Selenium .

如果考虑做的话,我是否可以加入?
先把目标定位在实现 针对WATIR 和 Selenium的 DSL框架也行啊。



相关推荐

    Selenium教程2-基本脚本详解

    通过对Selenium IDE录制的脚本进行分析和解释,我们可以了解到自动化测试的基本步骤和 Python 语言中使用 Selenium 的基本方法。 首先,我们需要了解 Selenium 是什么?Selenium 是一个自动化测试框架,使用它可以...

    python+selenium的html报告脚本

    Python 是一种高级编程语言,以其简洁的语法和丰富的库而闻名,而 Selenium 是一个用于 Web 应用程序自动化测试的框架,支持多种浏览器。在这个场景中,"python+selenium的html报告脚本" 提到了一个关键点:使用 ...

    SELENIUM 2 自动化测试实战 基于PYTHON语言

    基于Python的Selenium测试框架,因其简洁易懂的语法和丰富的库支持,成为了自动化测试工程师的首选语言之一。 1. **Python 语言基础**:在使用Selenium进行自动化测试之前,熟悉Python的基本语法、数据类型、控制...

    Selenium_IDE_官方文档翻译.pdf

    Selenese 脚本语法是 Selenium IDE 使用的脚本语言,用于编写测试套件。Selenese 脚本语法提供了许多命令,例如: * echo 命令:用于打印消息。 * waitFor 命令:用于等待元素的出现。 * verify 命令:用于验证页面...

    selenium基于python的自动化测试脚本

    Selenium支持多种编程语言,包括Python、Java、C#等,其中Python以其简洁明了的语法,成为很多初学者和专业开发者的首选。 在Python中,我们通常会使用`selenium`库来实现自动化测试。首先,我们需要安装这个库,...

    selenium+python建立环境和录制脚本.docx

    在环境搭建完毕后,可以开始编写简单的Selenium脚本。例如,打开Firefox浏览器并访问指定网址: ```python from selenium import webdriver browser = webdriver.Firefox() browser.get("http://www.taobao.com") `...

    Selenium_Jenkins持续集成(定时跑自动化脚本并生成测试报告).docx

    本文将详细介绍如何利用Jenkins进行持续集成,特别是结合Selenium实现自动化脚本的定时运行和生成测试报告。 首先,我们需要安装Jenkins。下载Jenkins的安装包后,解压并双击进行安装。在安装过程中,需要访问`...

    selenium2 python自动化测试 PDF学习

    综合以上内容,可以看出,“selenium2 python自动化测试 PDF学习”所涵盖的知识点相当丰富,不仅包括了自动化测试的基本概念和技术实现,也涉及到具体的编程语言应用、测试脚本编写、效率提升和测试结果报告的处理。...

    Selenium测试工具研究报告

    此外,IDE还提供了代码转换功能,允许将Selenium语言的测试脚本转换为其他编程语言,如C#、Java,从而与Selenium RC配合使用,执行更复杂的测试任务。 #### 四、Selenium RC的使用 ##### 4.1 Selenium RC的工作...

    【脚本】基于selenium批量查询&统计号码归属地

    首先,Python是一种广泛使用的高级编程语言,因其简洁明了的语法和丰富的库支持,常用于编写脚本和自动化任务。在这个项目中,Python被用来创建一个脚本,执行批量查询和统计电话号码的归属地。 Selenium是一个强大...

    selenium-ide-2.5.0工具

    Selenium IDE 2.5.0版本在当时是一个稳定且功能丰富的版本,支持多种编程语言,如Java、C#、Python等,方便用户导出测试脚本并进行进一步的定制。 二、安装与配置 要在Firefox中安装Selenium IDE 2.5.0,首先需要...

    Selenium自动化测试框架详细介绍ppt及示例脚本.rar

    本资料包包含了Selenium的详细讲解PPT以及Python测试脚本示例,旨在帮助初学者和希望深入理解Selenium的测试工程师更好地掌握这个强大的框架。 **一、Selenium等待方式** 在自动化测试中,等待方式的选择直接影响...

    场馆预约系统Python+Selenium自动化脚本

    使用Python作为Selenium的绑定语言,是因为Python简洁易读的语法使得编写测试脚本更为直观和高效。Python的丰富库支持也使得数据处理和测试报告生成变得更加方便。在"BUAA_CGYY-main"这个项目中,我们可能看到的是一...

    Selenium,python打包

    Selenium库能够模拟用户的行为,如点击按钮、填写表单、导航等,而Python作为编程语言,提供了简洁易读的语法,使得编写Selenium脚本变得更加便捷。本文将深入探讨Selenium与Python打包的相关知识点,帮助你理解如何...

    实现京东抢茅台脚本源码go语言

    Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言,因其高效性能和简洁的语法而受到广大开发者喜爱。在后端开发领域,Go语言以其强大的并发处理能力而独树一帜,这...

    chrome 浏览器 selenium IDE插件

    2. **语法转换**:IDE 支持将录制的脚本导出为多种编程语言的格式,如 Java、Python、C# 等,方便在更大的测试框架中使用。 3. **调试工具**:内置的调试器可以帮助用户逐步执行脚本,查看每一步的结果,找出潜在...

    selenium初学者指南

    作为初学者,你需要首先理解Selenium的基本概念和架构,然后选择一种编程语言(推荐Python,因为其语法简洁,易于上手),学习如何安装和配置Selenium库。接着,通过编写简单的测试用例,例如打开网页、查找元素、...

    SELENIUM2+自动化测试实战+基于PYTHON语言.pdf

    Python因其简洁明了的语法和丰富的库支持,成为了Selenium的首选语言之一。安装Selenium库后,我们可以创建一个WebDriver实例,指定浏览器类型(如Chrome, Firefox等),然后调用其提供的方法来操控浏览器。 3. **...

    selenium+webdriver+python自动化测试

    Selenium RC是一个允许用户用任何编程语言编写测试脚本的服务器。而Selenium WebDriver则是用于编写自动化测试用例的库,它提供了一套丰富的API,可以直接与浏览器交互。 2. Python的基本概念:Python是一种高级...

Global site tag (gtag.js) - Google Analytics