我通常使用 java 的 webdriver,但现在我需要用 webriver 和 Python 来制作
花一整天的时间,无法理解如何阅读Python中的文本
我需要按 xpath 读取并断言名称
在爪哇中:
{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"后,给出错误消息属性错误:"列表"对象没有属性"文本"
完整代码:
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()
-
您使用的是
find_elements_by_xpath
,而不是find_element_by_xpath
,因此您从页面中获取与 xpath 匹配的所有元素的列表,而不是您期望的单个元素。 -
您从调用中得到一个空列表,这让我认为您的 xpath 不正确。
尝试使用CSS选择器:
self.driver.find_element_by_css("ul#pagemenu li.current_page_item a")
Firebug 中的 XPath 看起来像:"/html/body/div[2]/div/ul/li/a"