2017-10-03 1 views
-1

Après avoir cliqué sur le bouton de recherche sur la page d'accueil, les résultats sont affichés sur la même page et l'URL ne change pas du tout. Sur la page de résultats, je ne trouve aucun élément html.Capture des éléments html avec du sélénium après avoir cliqué sur le bouton de recherche

ce que je cherche:

from bs4 import BeautifulSoup 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys  

# webdriver 
browser = webdriver.Chrome("C:/ChromeDriver/chromedriver.exe") 
browser.get("http://homepage") 

# click search 
search_button = browser.find_element_by_name("searchButtonLabel") 
search_button.click() 

# click the element 
hit_list = browser.find_element_by_xpath("//*[@id=\"keresgrid\"]/div[2]/table/tbody/tr[2]/td[5]/a/div").click() 

et ceci est mon message d'erreur:
pas cet élément: Impossible de trouver l'élément:

Comment puis-je lire à nouveau les NewPage (résultats) et trouver les éléments html?

merci!

+0

2 Points: peut-être devez-vous ajouter un délai pour synchroniser avec l'application après avoir cliqué sur le bouton de recherche, puis essayer de trouver des éléments. ou votre Xpath est incorrect. Si possible, partagez le code HTML de l'application après un clic sur le bouton de recherche. Mettez également en évidence quel objet vous essayez d'identifier –

Répondre

0

Je pense que vous avez besoin d'attendre.

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

hit_list = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, "//*[@id='keresgrid']/div[2]/table/tbody/tr[2]/td[5]/a/div")) 
) 
hit_list.click() 
+0

merci! cela a fonctionné avec mettre un délai de time.sleep (5) après search_button.click() – patrik2017

+0

@ patrik2017, Si le code fonctionne seulement avec 'time.sleep (5)', alors la solution fournie n'est pas applicable et ne devrait pas être acceptée. – Andersson

0

browser.current_url peut être utile pour vous assurer que vous êtes sur la bonne page.

Vous pouvez également utiliser browser.page_source pour obtenir le code HTML au moment où vous y accédez. Vous pouvez utiliser cette source HTML pour tester votre requête xpath et/ou rendre la page sure comme prévu.