用自然语言的语法分析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……”。

呵呵,不知道是不是大家认同我的观点。

你可能感兴趣的:(编程,框架,Google,脚本,ide)