Python webdriver getText

时间:2012-09-13 15:31:13

标签: python xpath webdriver

我通常使用带有java的webdriver,但现在我需要使用webriver和Python

花了一整天,并且无法理解,如何在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:'list'对象没有属性'text'

完整代码:

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 个答案:

答案 0 :(得分:2)

  1. 您正在使用find_elements_by_xpath,而不是find_element_by_xpath,因此您将获得页面中与xpath匹配的所有元素的列表,而不是您期望的单个元素。

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

答案 1 :(得分:0)

尝试使用css选择器:

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

你在firebug中的xpath看起来像:“/ html / body / div [2] / div / div / div / div / div / div / div / div / ul / li / a”