Selenium Python-is_displayed()函数的问题



我写了一个Python脚本,可以自动将数据填充到表单中。为此,我使用了Selenium ChromeDriver。程序的执行不正常,因为我每次都会遇到错误消息。

我想要下面的代码片段来检查网站上是否有表格。如果是,则执行if语句下面的任何语句,否则执行continue语句。问题是程序正在检查的表可能存在于我正在使用的网站上。

这是我关心的代码部分:

if(browser.find_element_by_xpath('/html/body/div/div/center/table/tbody').is_displayed()):
print("Result Found for Roll No: " + str(rollNo))
anotherResultLink = browser.find_element_by_link_text('Check Another Result').click()
result_feeder(rollNo + 1, True)

else:
continue

这是每次向我抛出的错误信息:

Message=Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/div/center/table/tbody"}
(Session info: chrome=84.0.4147.125)
Source=E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py
StackTrace:
File "E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py", line 61, in admit_card_generator
if(browser.find_element_by_xpath('/html/body/div/div/center/table/tbody').is_displayed()):
File "E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py", line 39, in result_feeder
admit_card_generator(rno)
File "E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py", line 64, in admit_card_generator
result_feeder(rollNo + 1, True)
File "E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py", line 33, in result_feeder
admit_card_generator(list_of_roll_nos[i])
File "E:MithunPythonWebsite AutomatorWebsite AutomatorWebsite_Automator.py", line 74, in <module>
result_feeder(20607526, False)

关于这个节目,有件事让我感到不安。我知道is_displayed()函数返回一个布尔值。因此,程序开始时的if语句会检查表(可能/可能不在网站中(是否存在。

然而,每当我使用的网站没有表时,Python似乎甚至拒绝检查if语句。因此,我遇到了这个错误。

我面临的问题是:如何强制Python检查表是否存在(使用is_displayed()函数(,即使该表不存在?

我们非常感谢对此问题的任何解决方案/解决方法。

附言:我是12年级的学生。

您不能对不存在的元素调用is_displayed,必须存在该元素才能调用。基本上,它在find_element_by_xpath调用中失败时会出现NoSuchElementException。

你能做的就是试一试。

首次导入NoSuchElementException:

from selenium.common.exceptions import NoSuchElementException

然后:

try:
browser.find_element_by_xpath('/html/body/div/div/center/table/tbody')
print("Result Found for Roll No: " + str(rollNo))
anotherResultLink = browser.find_element_by_link_text('Check Another Result').click()
result_feeder(rollNo + 1, True)
except NoSuchElementException:
continue

相关内容

  • 没有找到相关文章

最新更新