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

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

[code]
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();
}
}
[/code]

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

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

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

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

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

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

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

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

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

呵呵,不知道是不是大家认同我的观点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值