2012-09-13 17 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「