导出的Selenium脚本引发异常

时间:2011-08-12 09:40:44

标签: python selenium selenium-rc

我使用Selenium IDE记录了一个动作,并使用File->导出测试用例作为Python 2(远程控制)格式。

我正在使用Selenium RC 2.3.0

然后我从命令提示符运行脚本,但它抛出异常。

导出的Python 2 RC代码是:

from selenium import selenium
import unittest, time, re

class login(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "http://testServer1/")
        self.selenium.start()

    def test_login(self):
        sel = self.selenium
        sel.open("/WebAccess/login.html")
        sel.type("id=LoginID", "Administrator")
        sel.type("id=Password", "Administrator")
        sel.click("id=login")
        sel.wait_for_page_to_load("30000")
        sel.click("link=Home") # This is where it fails.

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()

在这一行sel.click("link=Home"),它失败并带有异常

======================================================================
ERROR: test_login (__main__.login)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Documents and Settings\User\Desktop\login.py", line 16, in test_log
in
    sel.click("link=Home")
  File "C:\Python27\lib\selenium\selenium.py", line 290, in click
    self.do_command("click", [locator,])
  File "C:\Python27\lib\selenium\selenium.py", line 217, in do_command
    raise Exception, data
Exception: ERROR: Element link=Home not found

----------------------------------------------------------------------

我甚至尝试将30000增加到60000,但仍然没有帮助。我可以看到页面已完全加载并等待一段时间,因为超时较高。但是,当执行此链接= Home时,它会失败。

HTML代码为:

<div class="links nopreview">
<span><a class="csiAction" href="/WebAccess/home.html#URL=centric://REFLECTION/INSTANCE/_CS_Data/null">Home</a></span>
<span>&nbsp;•&nbsp;</span>
<span><span><a class="csiAction" href="/WebAccess/home.html#URL=centric://SITEADMIN/_CS_Site">Setup</a>
</span><span>&nbsp;•&nbsp;</span>
</span><span><a title="Sign Out" class="csiAction csiActionLink">Sign Out</a></span>
</div>

使用IDE记录的操作是:

<tr>
    <td>open</td>
    <td>/WebAccess/login.html</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>id=LoginID</td>
    <td>Administrator</td>
</tr>
<tr>
    <td>type</td>
    <td>id=Password</td>
    <td>Administrator</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=login</td>
    <td></td>
</tr>

<tr>
    <td>click</td>
    <td>link=Home</td>
    <td></td>
</tr>

1 个答案:

答案 0 :(得分:0)

尝试使用XPath,例如:

sel.click('//a[contains(text(),"Home")]')