2016-05-01 15 views
1

Ich habe dieses page. Ich muss auf das Facebook-Symbol klicken. Beim es tut ich bin immer:Python Selen: Element zur Zeit nicht sichtbar

selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with 

-Code unten gegeben:

if 'log' in html.lower(): 
     print("not logged in") 
     sleep(3) 
     #Click on Fb button 
     fb_element = driver.find_element_by_xpath('//a[@tooltip="Facebook"]') 
     fb_element.vis 
     fb_element.send_keys(Keys.TAB) 

Antwort

1

Es ist ein weiteres Element mit tooltip="Facebook" auf der Seite und dieses Element ist eigentlich unsichtbar. Nun, es gibt tatsächlich 10 von ihnen:

> $x('//a[@tooltip="Facebook"]').length 
10 

können Sie finden alle Elemente für Ihre Locator finden und filtern das sichtbare über next() und is_displayed():

facebook_links = driver.find_elements_by_xpath('//a[@tooltip="Facebook"]') 
visible_link = next(link for link in facebook_links if link.is_displayed()) 
visible_link.click() 
+0

Ah - Also meine Vermutung nur eine haben Dieses Element war falsch. Dein Code hat wie Charme funktioniert. Vielen Dank! – Volatil3

+1

@ Volatil3 Ja, ich habe auch kurz versucht, den Locator einzugrenzen, damit er den gewünschten Link eindeutig identifiziert, aber ich habe im besten Fall 5 statt 10 mit meinen Versuchen. Filter sichtbar nur in diesem Fall klingt nicht wie eine schlechte Idee :) – alecxe

Verwandte Themen