2016-08-21 98 views
0

嗨,我一直在努力学习硒。Python硒检测错误?

我遇到的问题是一个元素没有被检测到。我正在使用的html代码在这里突出显示https://gyazo.com/a76608d4c4e9fc3bd29412436604c173。该行代码停止了我的程序并给了我错误https://gyazo.com/72fc72e6488578c9c2a50b71311602c5

我使用来检测文本区域类的代码是

comment=driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") or driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]") 

因为有时评论形式之间没有边界和注释的形式进行切换。

我的想法是使用条件赋值运算符检查例如if(comment!= none):做些什么,但对我的理解python不允许这样做。

有关如何做以及我的xpath是否可靠的方法的任何建议?

+0

请将HTML代码和错误消息作为文本添加到您的问题中,而不是链接的图像。我还编辑了您的问题中的代码,以我认为您的意图。 – mhawke

+0

如果你实际上使用'comment = foo()或bar()',那么'comment'将是[truthy](https://www.udacity.com/wiki)/cs258/truthiness-in-python)这两个函数调用的值。 –

回答

0

如果您试图解决的问题实际上是有条件的分配,那么您可能想知道两件不同的事情。

第一个是你可以做:

如果(注释=无!)

你只需要做这样的:

comment = Foo() 
if comment is None: 
    comment = Bar() 

二,也许你想尝试分配comment如果第一次调用抛出一个错误而不仅仅是None。如果是这样,请尝试使用try

from selenium.common.exceptions import NoSuchElementException 
try: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") 
except NoSuchElementException: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]")