Как закрыть текущую вкладку драйвера, если xpath НЕ найден? - PullRequest
0 голосов
/ 20 апреля 2019

Если определенного XPath нет, мне нужен python, чтобы закрыть вкладку.Что я могу сделать?

Я использую Python + Selenium с Chrome.

from selenium import webdriver
import os
import time
import pyautogui
option = webdriver.ChromeOptions()
chrome_prefs = {}
option.experimental_options["prefs"] = chrome_prefs
chrome_prefs["profile.default_content_settings"] = {"images": 2}
chrome_prefs["profile.managed_default_content_settings"] = {"images": 2}
chrome_prefs["profile.default_content_settings"] = { "popups": 2 }
option.add_argument("--disable-notifications")


driver = webdriver.Chrome(chrome_options=option)
driver.get('https://www.spiritfanfiction.com/login')
driver.find_element_by_xpath("//*[@id='Usuario']").send_keys("my username")
driver.find_element_by_xpath("//*[@title='Senha']").send_keys("y password")
driver.find_element_by_xpath("//*[@class='btn btn-primary']").send_keys("my password")
driver.find_element_by_xpath("//*[@class='btn btn-primary']").click()
LinkDoPerfil = driver.get('https://www.spiritfanfiction.com/perfil/bestofgguk')

try:
        driver.find_element_by_xpath('//*[@class="fa fa-eye"]').click()
else:
        driver.close()

Это строка, которую мне нужно закрыть, если вкладка не найдена:

driver.find_element_by_xpath('//*[@class="fa fa-eye"]').click()

Ответы [ 3 ]

0 голосов
/ 20 апреля 2019

Вы можете попробовать find_elements_by_, чтобы найти элемент.Таким образом, вы избегаете ожидания возникновения исключения.

Попробуйте это:

elements = driver.find_elements_by_xpath('//*[@class="fa fa-eye"]')
if len(elements) > 0:
    elements.pop(0).click()
else:
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('w').key_up(Keys.CONTROL)
0 голосов
/ 22 апреля 2019

Когда find_element_by_id не находит элемент, возникает исключение (NoSuchElementException).Используйте это, чтобы определить, следует ли вам закрыть окно.

try:
    driver.find_element_by_xpath('//*[@class="fa fa-eye"]')
except NoSuchElementException:
    driver.close()
0 голосов
/ 20 апреля 2019
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.google.com")

def checkExistElement(elementId):
    try:
        driver.find_element_by_id(elementId)
        return True
    except: print('Cannot find')
    return False

if(not checkExistElement('testID')):
    print('Close Tab')
    driver.close()


# Other Operation
# ...
...