0

在过去的几个月里,我一直在自学 Python。我的第一个项目是一个使用 Selenium RC Web 驱动框架的浏览器驱动测试用例(但在我的项目中没有导入 webdriver,以免混淆)。基本上,我的测试用例需要连接到用 JavaScript 和 HTML 编写的“.aspx”页面的刷新循环中。此循环不断刷新此.aspx页面,直到sel.is_text_present("foo")满足条件。刷新直到出现定义的“文本”后,脚本应该是一个与字符串click一起出现的 JavaScript 按钮。is_text_present执行脚本后,Firefox 会打开并将自身定向到特定页面并输入其refresh loop,但是当文本出现时(即.aspx页面更改其状态并使用 JavaScript 按钮加载 JavaScript 表)脚本不执行循环的另一个分支。这是一段代码,显示了我已经实现的逻辑:

i = sel.is_text_present("Schedule")    #text that the test case is 'waiting' for
while i != True:
    print i
    print "Waiting for job..."
    sel.refresh()
else:                
    print "Job found..."
    sel.click("id=Select")
    sel.wait_for_page_to_load("30000")
    sel.click("id=1")
    sel.wait_for_page_to_load("30000")
    print "Success!"
    test_py_s_f_t_c()    #calls this function again to repeat the test case

我的循环语句的逻辑是否指示 Firefox 刷新,直到它检测到一个文本字符串,然后在检测到这个字符串时单击一个按钮?如果按钮的名称是动态的并且发生变化,是否可以在按钮 ID 中使用通配符?

4

2 回答 2

0

我只通过 c# API 使用过 selenium,但您可以尝试在 click 函数中使用 xpath

sel.click("//输入[包含(@id,'partialId')]"); 或按钮,具体取决于您使用的 html 类型

于 2013-04-10T04:29:10.310 回答
0

单纯从逻辑上看,是不正确的。因为您没有在刷新后检查文本是否存在。

你可以这样写。

i = sel.is_text_present("Schedule")    #text that the test case is 'waiting' for 
while i != True:
    print i
    print "Waiting for job..."
    sel.refresh()
    i = sel.is_text_present("Schedule")    #text that the test case is 'waiting' for

print "Job found..."
于 2013-04-10T04:42:50.980 回答