在for循环中丢失WebElement上下文?为什么?

时间:2014-12-08 17:36:57

标签: python unit-testing testing selenium webdriver

我尝试以这种方式访问​​<div class="post">循环内的父WebElement for的子WebElements (img和p tags)

self.posts = self.driver.find_elements_by_xpath("//div[@class='post']")

for post in self.posts:
    self.image = post.find_element_by_xpath(".//a/img")
    str = self.image.get_attribute("src").replace("b.", ".")

    self.title = post.find_element_by_xpath(".//div/p")
    self.title. # <<<<<------- Has no attributes or functions

请注意,我使用了相对XPATH路径来访问引用其父post的子WebElements(.//a/img和.// div / p)

我可以获取self.image的WebElement对象上下文,它具有所有WebElement属性。如您所见,我可以使用self.image.get_attribute()

但是,当我在循环中,并尝试将post变量实例化为self.title时,该变量没有任何属性,我的智能感知&# 34;没有建议&#34;

我的疑问是,为什么......为什么我可以使用post referente来实例化一个WebElement对象self.image,但我不能用self.title < / p>

1 个答案:

答案 0 :(得分:0)

Awwhnn¬¬我觉得自己很蠢......

@Louis这是一个intellisense问题。你说的没错。无论intellisense说什么...我会赞成你的评论给你赞誉,因为它对我有帮助。谢谢你!

有效:

self.posts = self.driver.find_elements_by_xpath("//div[@class='post']")

for post in self.posts:
    self.image = post.find_element_by_xpath(".//a/img")
    str = self.image.get_attribute("src").replace("b.", ".")

    self.title = post.find_element_by_xpath(".//div/p")
    print(self.title.text)

无论如何,我已经吸取了教训......