我通常使用带有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()
答案 0 :(得分:2)
您正在使用find_elements_by_xpath
,而不是find_element_by_xpath
,因此您将获得页面中与xpath匹配的所有元素的列表,而不是您期望的单个元素。
您正在从调用中获取一个空列表,这使我认为您的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”