如何避免无法在 Python (selenium) 中使用 'if' 语句定位元素?

How to avoid unable to locate element with 'if' statement in Python (selenium)?

我正在访问多个 Instagram 页面并点击 'following' 个框。有些帐户是私人帐户,following/followers 框不可点击。我想做的是创建一个 'if' 条件来避免这些无法点击的情况。我想做的是编码如下:

if driver.find_element_by_xpath('//div[@class="QlxVY"]/h2') == None:
      #do something (click on 'following' box and etc.)

以上路径只存在于私人账户页面。它找到了“这个帐户是私人的”短语。所以,我的推理是:如果没有出现该短语,那是因为该帐户不是私人帐户,我可以继续并单击 'following' 框。问题是后跟 'None' 的 '==' 运算符不起作用。当我到达 public 帐户时,出现以下错误(我的 'if' 语句被忽略):

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //div[@class="QlxVY"]/h2

我使用'None'错了吗?我需要用别的东西吗? 我已经做了一些研究,但我没有找到关于它的线索......只有帖子谈论找到以前隐藏的元素的技巧。 谢谢!

您可以尝试以下两种方法中的任何一种:-

1- 通过检查元素的长度

element = driver.find_elements_by_xpath('//div[@class="QlxVY"]/h2')
if len(element)==0:
    print('Element not Present ')
    #do something (click on 'following' box and etc.)

2- 通过捕捉 NoSuchElementException

from selenium.common.exceptions import NoSuchElementException

try:
    if driver.find_element_by_xpath('//div[@class="QlxVY"]/h2'):
        print('Element found')
    
except NoSuchElementException:
    print('Element not Present')
    #do something (click on 'following' box and etc.)