2015-09-28 53 views
0

我正在写单元测试webdriver硒selenium webdriver“is_element_present”与“driver.find_element_by〜”相同吗?

使用is_element_present,而不是只是“find_element_by〜”,如果它已经包含它是什么?

def is_element_present(self, how, what): 
     try: self.driver.find_element(by=how, value=what) 
     except NoSuchElementException, e: return False 
     return True 

我的意思是,每当我使用“is_element_present”它通过“find_element_by〜”反正有啥的地步了吗?

这和这给了我同样的例外,如果发生什么差别?

+2

isElementPresent在正常情况下不会抛出异常,只是一个布尔值。使用findElementBy你必须处理异常。您发布的代码也隐藏了NoSuchElementException - 如果它捕获它,它将简单地返回false。 – skandigraun

+0

@skandigraun你应该把你的评论作为答案。 – JeffC

回答

0

isElementPresent不会抛出与findElementBy相同的异常 - 至少NoSuchElementException永远不会抛出。你粘贴的代码也隐藏了NoSuchElementException - 它只是返回false。

所以这个例外必须由您在使用findElementBy时处理。

除了例外,返回值也不同。 findElementBy返回您可以稍后在代码中使用的第一个匹配的WebElementisElementPresent只是一个检查,如果可以在页面上找到指定的元素,返回一个布尔值。