2017-02-13 2 views
1

Ich versuche, eine Checkbox mit Selenium in Python zu deaktivieren. Aber ich bekam die folgende Fehlermeldung:Python Selen, das eine unsichtbare Checkbox auswählt

selenium.common.exceptions.ElementNotVisibleException:
Nachricht: Element ist nicht sichtbar und so kann nicht mit

interagiert werden Ich frage mich, wie soll Ich mache es sichtbar?

Ein interessanter Teil dieses Kontrollkästchens ist, dass es einige JavaScript enthält, und ich bin mir nicht sicher, ob dies der Ort ist, der den Ärger verursachte. Ich habe die folgenden Methoden ausprobiert, habe aber den gleichen Fehler.

driver.find_element_by_id("1986 Thru 1990").click() 

oder

driver.find_element_by_xpath('//*[@id="1986 Thru 1990"]').click() 

enter image description here

Antwort

1

versuchen, einige Zeit hinzuzufügen, zu warten, bis Element sichtbar werden:

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

wait = WebDriverWait(driver, 10) 
element = wait.until(EC.visibility_of_element_located((By.ID,'1986 Thru 1990'))) 
element.click() 

Lassen Sie mich wissen, ob noch Problem

+0

Dank persistieren für deinen Vorschlag Ion. Aber es sieht so aus, als hätte ich eine Ausnahme für das Zeitlimit selen.common.exceptions.TimeoutException: Message: '. Sollte ich das Zeitlimit erhöhen? –

+0

Nein. Sagen Sie mir, ob dieses Kontrollkästchen anfänglich sichtbar ist oder Sie nach unten scrollen müssen, um es zu sehen oder den Mauszeiger darüber zu bewegen, um es sichtbar zu machen? – Andersson

+0

@ tao.hong Wenn Sie eine Timeout-Ausnahme haben, dann bedeutet das möglicherweise, dass Sie nicht das richtige Element mit Ihrem 'xpath' greifen. Sie erhalten möglicherweise ein Element, das nicht sichtbar ist. Die Bereitstellung von HTML könnte helfen. – mrfreester