2016-06-01 8 views
2

Hallo allerseits Ich versuche ein Skript zu schreiben, um auf eine Webseite zu klicken. Allerdings stehe ich diesen Fehler:Element ist momentan nicht sichtbar und kann daher nicht mit Firefox und Python interagiert werden

Traceback (most recent call last): File "D:/YetLin/testbb.py", line 44, in yearselect.select_by_value("2") File "D:\Python27\lib\site-packages\selenium\webdriver\support\select.py", line 81, in select_by_value self._setSelected(opt) File "D:\Python27\lib\site-packages\selenium\webdriver\support\select.py", line 211, in _setSelected option.click() File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 74, in click self._execute(Command.CLICK_ELEMENT) File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 457, in _execute return self._parent.execute(command, params) File "D:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 233, in execute self.error_handler.check_response(response) File "D:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with

Hier ein Bild des Elements ist, und die folgende ist mein Code. Könnte jemand bitte helfen? :)

enter image description here

from selenium import webdriver 
 
from selenium.webdriver.support.ui import Select 
 
from selenium.webdriver import ActionChains 
 
url = 'https://appworld.blackberry.com/isvportal/login.do' 
 
driver = webdriver.Firefox() 
 
driver.get(url) 
 

 
element = driver.find_element_by_id("ssoLogin") 
 
driver.execute_script("arguments[0].click();", element) 
 
username = driver.find_element_by_name("formId:email") 
 
password = driver.find_element_by_name("formId:password") 
 

 
username.send_keys("yyy") 
 
password.send_keys("xxx") 
 

 
driver.find_element_by_name("formId:logincommandLink").click() 
 

 
driver.find_element_by_link_text('Reports').click() 
 
driver.implicitly_wait(3) 
 
driver.find_element_by_link_text('Schedule').click() 
 

 

 
driver.implicitly_wait(3) 
 

 
driver.find_element_by_id("s2id_fetchTypesSelect") 
 

 

 

 
driver.find_element_by_id("s2id_fetchTypesSelect") 
 
driver.find_element_by_css_selector("#fetchTypesSelect").click() 
 
yearselect = Select(driver.find_element_by_css_selector("#fetchTypesSelect")) 
 
driver.implicitly_wait(3) 
 
yearselect.select_by_value("2")

Das Ganze ist eine Dropdown-Liste. Dies wird erst angezeigt, nachdem Sie auf "Bitte wählen Sie einen Typ" geklickt haben. Ich möchte die „Download Zusammenfassung“

enter image description here

+0

Versuchen Scrollen nach oben/unten, um das Element auszuwählen es dann. Das könnte funktionieren. – ssundarraj

+0

können Sie visuell bestätigen, dass das Element sichtbar ist, während das Skript ausgeführt wird? –

+0

danke für deinen Kommentar! Die Dropdown-Liste erfordert jedoch kein Scrollen (manuelles Klicken). – Bread

Antwort

1

verwaltet, um es zu bekommen :) posten meine Antworten hier, wenn jemand es brauchen könnte.

Was ich tat, war, das Suchtextfeld zu verwenden, um die Option zu erhalten, die ich wollte.

driver.find_element_by_xpath('//*[@id="s2id_fetchTypesSelect"]/a/span[1]').click() 
 
time.sleep(1) 
 
#driver.find_element_by_css_selector('#fetchTypesSelect') 
 

 
time.sleep(1) 
 

 
search= driver.find_element_by_xpath('//*[@id="select2-drop"]/div/input') 
 
search.click() 
 
search.send_keys('Download Summary') 
 
driver.find_element_by_xpath('//*[@id="select2-drop"]/ul/li/div').click()

0

Ich habe vor das gleiche Problem hatte zu bekommen. Tatsache ist, dass das select-Element versteckt ist, tatsächlich ist die Klasse hidden-field. Der Selen-Treiber kann es nicht sehen.

+0

hmm, wie hast du es gelöst? Irgendwelche Tipps? – Bread

+0

Ich habe es nicht gelöst. In der Tat, wenn Sie eine Lösung finden, werde ich froh sein, es zu benutzen! –

+0

@MatteoFelici sein nicht Selenproblem. Problem ist, dass das Element im Browserfenster nicht sichtbar ist. –

Verwandte Themen