Selenium Python - 如果元素不存在,则执行此操作,否则

3

我并不是一个Selenium专家,因此我谦虚地来寻求帮助。在执行下面的Python脚本后,我认为如果它在打印之间失败,我可以简单地查看日志并查看最后一次打印的位置。不幸的是,脚本会一直运行到结束,并打印所有内容,无论是否成功。以下是我的代码:

print("Attempting, map zoom 4x.")
driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
print("Zoom in 4x. Successful")

我想要做的是:

在 IT 技术方面,我试图实现以下目标:
print("Attempting, map zoom 4x.")
if driver.find_element_by_xpath ...... exists,
then
   driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
   driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
   driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
   driver.find_element_by_xpath("//*[@class=\"leaflet-control-zoom-in\"]").click()
   print("Zoom in 4x. Successful")
else
   print("Element does not exist, it failed.")

我该如何为Python/Selenium格式化此内容?感谢您的帮助。谢谢。
1个回答

3
您可以尝试类似以下的方法:

您可能需要尝试以下步骤:

print("Attempting, map zoom 4x.")
elem = driver.find_element_by_xpath('/xpath/to/your/element/here')
if elem.is_displayed():
    elem.click()
    print("Zoom in 4x. Successful")
else:
    print "Element is not visible"

谢谢 qaduderino,我现在就去尝试。等有结果了再回报。 - MacGruber
似乎Selenium在driver.find...等操作中出现了问题,因为它一开始就找不到该元素。我已经尝试直接跳转到if语句。 if driver.find_element_by_xpath(.....).is_displayed():但这也失败了。 - MacGruber
print("尝试在任务列表中点击高亮显示'missionname'。") if self.is_element_present(By.XPATH, "//[contains(text(), '123')]"): print("找到元素,正在点击高亮显示。") driver.find_element_by_xpath("//[contains(text(), '123')]").click() else: self.fail("点击高亮显示失败。未找到元素?") - MacGruber
抱歉关于格式的问题,我无法弄清 code - MacGruber
嗯,我从未尝试过 is_element_present。我得去查一下。 - qaduderino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接