我写了一个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