2012-09-13 20 views
2

我通常使用webdriver的与Java,但现在我需要webriver和Python的Python的webdriver的getText

花整天做它,无法理解,如何读取Python中的文本

我需要与XPath阅读并断言名

在Java:

{driver.findElement(By.xpath("//*[@id='reportCriteria']/fieldset[1]/fieldset[1]/dl/dd/div/span/label")).getText());  
assertEquals(testedVenueName, driver.findElement(By.xpath("//*[@id='reportCriteria']/fieldset[1]/fieldset[1]/dl/dd/div/span/label")).getText());} 

在Python:

{inputElement = self.driver.find_elements_by_xpath("//*[@id='pagemenu']/li/a") 
self.assertEqual("Home", inputElement)} 

结果:“Home”=! []

试图把 “的.text” 到第一线或 “inputElement.text” 后给出错误信息AttributeError的: '名单' 对象有没有属性 '文本'

全码:

class Test(unittest.TestCase): 
    def setUp(self): 

     profile = webdriver.FirefoxProfile() 
     profile.native_events_enabled = True 
     self.driver = webdriver.Firefox(profile) 

    def testWebtest_1(self): 

     self.driver.get("http://www.psvitahub.com/") 

     inputElement = self.driver.find_elements_by_xpath("//*[@id='pagemenu']/li/a")          

     self.assertEqual("Home", inputElement.text) 

    def tearDown(self): 
     self.driver.close() 

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

回答

2
  1. 您使用的是find_elements_by_xpath而不是find_element_by_xpath,因此您可以从页面中获取匹配xpath的所有元素的列表,而不是像您期望的那样使用单个元素。

  2. 你正在从调用中获得一个空列表,这让我认为你的xpath不正确。

+0

谢谢。这是很愚蠢的问题......有时你看不到明显的东西 –

+1

不用担心。 :)每个人偶尔都会错过显而易见的事物。 –

0

尝试使用CSS选择器:

self.driver.find_element_by_css("ul#pagemenu li.current_page_item a") 

您的萤火的XPath看起来:“/ HTML /体/ DIV [2]/DIV/DIV/DIV/DIV/DIV/DIV/div/div/ul/li/a“