0

Ich benutze Selen-Python zum Abschaben this page und klicke auf Paginierung Nummern.Warum kann ich ein Element in Selen mit Python und Chrome Webdriver nicht anklicken?

ich versuche, dieses:

driver = webdriver.Chrome() 
time.sleep(5) 
driver.get(
    'http://www.ooshop.com/courses-en-ligne/ContentNavigation.aspx?TO_NOEUD_IDMO=N000000013081&FROM_NOEUD_IDMO=N000000013056&TO_NOEUD_IDFO=81018&NOEUD_NIVEAU=2&UNIVERS_INDEX=2') 
nbdespages = 23 

for i in xrange(2,nbdespages): 
    time.sleep(10) 
    number = str(i) 
    if(i<10): 
     cssSelec = 'ctl00_cphC_pn3T1_ctl01_rptPaginationB_ctl0%s_lbPage' %number 
    else: 
     cssSelec = 'ctl00_cphC_pn3T1_ctl01_rptPaginationB_ctl%s_lbPage' %number 
    try: 
     driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 
     element = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, cssSelec))) 
     driver.execute_script("arguments[0].click()", element) 
     driver.find_element_by_css_selector(cssSelec).click() 
    finally: 
     driver.save_screenshot('/Users/Parik/Desktop/test.jpg') 
     print "TRY Again, you will find" 

, aber ich habe diese Ausnahme:

TimeoutException: Message: 

i WebDriverWait verwenden, weil manchmal ich diese Fehlermeldung bekam, wenn ich es nicht verwenden und ich lese this question und verwenden Sie es für mein Problem:

Element is not clickable at point 

der Wert von CSS-Selektor korrekt

POST http://127.0.0.1:51099/session/ddf78c5a19e720909cbe6a0f5408788e/element {"using": "css selector", "sessionId": "ddf78c5a19e720909cbe6a0f5408788e", "value": "ctl00_cphC_pn3T1_ctl01_rptPaginationB_ctl02_lbPage"} 

UPADTE1

enter image description here

UPDATE 2

Mit Screen shot ich sehe, dass ich nicht die Zahlen sehen können, i habe meinen Code folgendermaßen geändert:

try: 
     element = driver.find_element_by_css_selector('img#ctl00_cphC_pn3T1_ctl01_rp_ctl15_ctl00_iVisu.image') 
     driver.execute_script("return arguments[0].scrollIntoView();", element) 
     driver.execute_script("arguments[0].click()", element) 
     driver.find_element_by_css_selector(cssSelec).click() 
    finally: 
     driver.save_screenshot('/Users/Parik/Desktop/test.jpg') 
     print "TRY Again, you will find" 

und jetzt sehe ich die Paginierung enter image description here

, aber ich habe immer diese Ausnahme:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"ctl00_cphC_pn3T1_ctl01_rptPaginationB_ctl02_lbPage"} 
    (Session info: chrome=51.0.2704.103) 
    (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.5 x86_64) 
+1

Ich denke, zuerst müssen Sie nach unten scrollen, um die Seitennummer sichtbar zu machen. Mach es und lass es mich wissen, was passiert ... wenn ok, werde ich es konvertieren, um zu antworten. – noor

+0

Sie müssen 'javascript' ausführen, klicken Sie wie folgt' driver.execute_script ("arguments [0] .click();", Element) '.... hoffe, es wird funktionieren .. –

+0

@noor i upadet meinen Code , aber ich habe das gleiche Problem – parik

Antwort

2

Sie sollten .execute_script versuchen, wie unten auszuführen klicken: -

try:driver.execute_script("document.getElementById(arguments[0]).click();", cssSelec) 

Sie können auch wie unten probieren: -

try: 
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, cssSelec)) 
) 
driver.execute_script("arguments[0].click()", element) 

Hinweis: - Sie bereiten Locator für id jedoch unter Verwendung von wie By.CSS_SELECTOR zu dem Element zu finden, aus diesem Grund erhalten Sie Ausnahme als NoSuchElementException, so ändern Sie es zu By.ID.

Sie können auch element.click() verwenden, aber wenn Sie Exception als wie Element is not clickable at point bekommen, empfehle ich Ihnen hier driver.execute_script("arguments[0].click()", element)click ausführen können.

Hoffe, es wird Ihnen helfen .. :)

0

cssSelec = 'ctl00_cphC_pn3T1_ctl01_rptPaginationH_ctl0%s_lbPage' %number und cssSelec = 'ctl00_cphC_pn3T1_ctl01_rptPaginationH_ctl%s_lbPage' %number beziehen sich auf die IDs für die Elemente Sie versuchen, und klicken nicht anwendbar CSS Selektoren selbst - Sie können verwenden Sie sie in einem CSS-Selektor mit dem # Symbol wie folgt:

a#ctl00_cphC_pn3T1_ctl01_rptPaginationH_ctl02_lbPage

Eine andere Methode, um die Elemente zu finden, und klicken Sie verwenden könnte, ist WebDriver der Link-Text-Locator als die Elemente sind Anker (<a>-Tag) Elemente zu verwenden.

Ich würde Ihnen wärmstens empfehlen, die Verwendung von Javascript zu vermeiden, um auf die Elemente zu klicken, da dies bestenfalls ein Hack ist und in Ihren Tests Potenzial für Javascript-Fehler eröffnet.

+0

Ich habe ein # hinzugefügt, aber ich habe diesen Fehler: WebDriverException: Nachricht: unbekannter Fehler: Element ist nicht an Punkt (151, 8) anklickbar. Anderes Element würde den Klick erhalten:

...
(Sitzungsinfo: chrome = 51.0.2704.103) (Treiberinfo: chromedriver = 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4), Plattform = Mac OS X 10.11.5 x86_64) – parik

Verwandte Themen