2

我通常将 webdriver 与 java 一起使用,但现在我需要使用 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)}

结果:“家”=![]

尝试将“.text”放到第一行或“inputElement.text”后给出错误消息 AttributeError: 'list' object has no attribute '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()
4

2 回答 2

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

  2. 您从通话中得到一个空列表,这让我认为您的 xpath 不正确。

于 2012-09-13T15:40:07.210 回答
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”

于 2012-09-17T16:14:36.713 回答