La fermeture d'un générique pop up en Sélénium
Tout en raclant une page à l'aide de selenium webdriver, il y a un "pop-up" qui s'affiche .
Sur l'Ouverture de la page, http://www.fanatics.com/search/red%20shoes - je vois une fenêtre pop-up avec le xpath ('//*[@id="mm_DesktopInterstitialImage"] " - mais je ne veux pas être à l'aide de xpath pour fermer cette alerte, et d'avoir quelque chose genric que pouvez fermer/fermer l'alerte.
Voici ce que j'ai essayé jusqu'à présent -:
from selenium import webdriver
import os
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
chromedriver = "/usr/local/CHROMEDRIVER"
desired_capabilities=DesiredCapabilities.CHROME
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver,desired_capabilities=desired_capabilities)
url='http://www.fanatics.com/search/red%20shoes'
driver.get(url)
#driver.set_page_load_timeout(300)
driver.implicitly_wait(60)
alert = driver.switch_to_alert()
alert.dismiss
handle=driver.window_handles
print handle
#[u'CDwindow-B1E9C127-719D-ACAA-19DE-1A6FA265A4FF']
De ce que je comprends, à partir d'exemples associés, les gens généralement de changer de fenêtre poignées, mais ma poignée a un seul élément.j'.e, driver.switch_to_window(driver.window_handles[1])
puis driver.close()
et enfin changer à nouveau, à l'aide de driver.switch_to_window(driver.window_handles[1])
j'ai aussi utilisé implicite attendre, puisque je n'étais pas sûr, si la fenêtre d'alerte était en train de lire à-tout - mais cela ne fonctionne pas non plus. Je n'ai pas wnat coder en dur pour le xpath,si cela est possible.
Ce que je fais mal ?
Liés, mais ne fonctionne pas pour moi : Le sélénium python comment fermer une fenêtre pop-up?
- Louis est absolument correct, ce n'est pas une fenêtre d'alerte qui peut être manipulé à l'aide de l'interrupteur d'alerte. Donc, vous devez fermer la fenêtre pop-up div à l'aide du bouton fermer.
Vous devez vous connecter pour publier un commentaire.
Que je peux voir, ce n'est pas une boîte d'alerte!!. C'est juste un Simple Pop-up qui s'affiche lorsque vous entrez dans la page et qu'il est présent dans la fenêtre principale elle-même(pas besoin de changement et de fermeture trop). Utilisez le code ci-dessous pour le fermer.
Il fonctionne parfaitement, essayez-vous 😉
Le pop-up que vous essayez de fermer n'est pas un navigateur alerte, mais un DOM popup. Un navigateur alert est une boîte de dialogue que le navigateur crée au niveau de l'OS. (Elle apparaît comme une fenêtre supplémentaire sur votre bureau.) Vous pouvez utiliser
.switch_to_alert()
à proximité de ces alertes. Un DOM pop-up est juste un élément HTML qui arrive à être utilisé de la page, comme s'il s'agissait d'une boîte de dialogue. Ce pop n'a d'existence que dans votre navigateur. (Le système d'exploitation ne le savent pas.) Vous ne pouvez pas utiliser.switch_to_alert()
pour fermer DOM popups.Pour obtenir ce message et de le fermer, vous devez inspecter les DOM (comme vous avez commencé à le faire), trouver l'élément du DOM qui représente le bouton de fermeture et ont Sélénium cliquez dessus.
J'ai rencontré un problème similaire, sauf que notre pop-up à closebox webelement dynamique id de la balise, ce qui rend difficile à accrocher. Nous avons fini par le résoudre en utilisant Par.className pour le trouver. Dans le code ci-dessous, j'utilise une Liste parce que j'étais aussi à la recherche pour voir combien d'éléments que j'avais, mais ce n'est pas obligatoire. Aussi, le code de production a manipulation supplémentaire, dans le cas de la fenêtre closebox éléments ont été trouvés.