Klicken Sie auf den dropdown-element-Menü mit Selenium Webdriver

Ich bin versucht, zu automatisieren, eine Verwaltung, die Aufgabe, so weit habe ich gemacht Selen auf ein element zu klicken, um Karte ein dropdown-Menü.

Klicken Sie auf den dropdown-element-Menü mit Selenium Webdriver

Wenn es kommt die Zeit, Klick auf eines dieser Menü-Elemente habe ich eine Fehlermeldung, dass das element angezeigt werden muss.

Code:

 driver = webdriver.Chrome()
 driver.implicitly_wait(10)
 driver.get(url)
 doc = driver.find_element_by_css_selector('td.ms-vb-title > table')
 try:
    doc.click()
    time.sleep(4)
    menu = driver.find_element_by_xpath('//menu/span[5]')
    time.sleep(4)
    print dir(menu)
    menu.click()
 except:
    traceback.print_exc()
    driver.quit()

Fehler:

Traceback (most recent call last):
  File "aprobar_docs.py", line 22, in main
    menu.click()
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py",
line 52, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py",
line 205, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", l
ine 156, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py"
, line 147, in check_response
    raise exception_class(message, screen, stacktrace)
ElementNotVisibleException: Message: u'Element must be displayed to click'

Wie Sie sehen ist der code wartet eine Menge zu bekommen, das element geladen. Ich habe auch versucht das element ist is_displayed Eigenschaft True aber hat nicht funktioniert auch nicht.

Hinweis: das element, das nicht angezeigt wird, ist die auf den xpath-Suche, ist es, weil ich dich eingeloggt hast, es mit dir(Menü)

Edit:

Den menu variable ist nicht das Menü selbst, es ist eines der Spannweiten, die Elemente des Menüs, doc ist die Perfil html-element immer geklickt, um zu zeigen, das dropdown-Menü.

Edit 2:

Prüfung der DOM auf chrome-tools, wenn Sie auf eine doc ein neues Menü angelegt wird, auf dem Baum, ich weiß nicht, ob es da ein ajax-Aufruf oder Vanille js, ich glaube nicht, dass es wirklich so wichtig, wie es erstellt wird. Ich kann nicht rufen Sie es aus der Seite und machen Sie ein python-Objekt aus, es ist nur nicht angezeigt wird, zumindest auf code.

Letzte Änderung:

Landete ich ausführen von JavaScript, damit es funktioniert. Offenbar, wenn Selen findet sich der Menüpunkt das erste element, das löst das Dropdown-Menü den Fokus verliert, und es macht das Menü wieder unsichtbar, wenn Sie nicht wählen Sie einen Menüpunkt und warten Sie für einige Zeit das dropdown-Menü noch angezeigt wird, wenn Sie versuchen, wählen ein element aus dem Menü das Menü verschwindet.

  • Warum sind Sie schlafen auf beiden Seiten der menu element-lookup? Wenn das element ist nicht sichtbar, wenn Sie rufen die Seite element, webdriver nicht in der Lage sein zu klicken, egal wie lange Sie warten.
  • Die Seite abgerufen wird, wenn Sie anrufen Treiber.get(), das dropdown wird auf dem Bildschirm angezeigt und präsentieren auf der dom-Baum, wenn Sie tun, doc.klicken Sie auf(), habe ich gerade beseitigt die Möglichkeit der Drop-down-Menü nicht geladen wird so schnell wie code ausgeführt wird. Der Menüpunkt ist vorhanden und sichtbar, zumindest für den Menschen, kann ich garantieren, dass.
  • Extrahieren Sie doc wieder nach dem Klick, und warten Sie das Menü anzeigen, und vergleichen Sie die id Attribut der Objekte vor und nach. Ich habe den leisen Verdacht, dass der selenium-server verweisen auch auf einen Cache webelement Objekt auf Ihrem zweiten element Extraktion (da Ihr auf action wird nicht ausgelöst, eine Seite zu load-Ereignis des page-Objekts nicht abgestanden).
  • Sind Sie sicher, dass die Spanne ist, was anklickbar ist, in diesem Fall? Um anklickbare, ein element haben muss, Dimensionen und sichtbar sein. Müssen Sie möglicherweise klicken Sie auf ein element in der Spanne anstatt der span selbst.
  • <span type="option" text="Eliminar" ...></span>, es hat nichts drin.
  • Haben Sie selenium IDE? Könnte aufschlussreich sein zu sehen, was, die Sie identifiziert das angeklickte element.
  • Die Seite erfordert ein Passwort (welches ich keinen Zugriff habe) und es ist gespeichert in chrome und ie aber nicht im firefox. Soweit ich weiß, die ide ist nur für firefox, jetzt Frage ich mich, ob ich dort mehr Informationen über die ide als auf die chrome dev tools.
  • Die IDE ist nur ein letzter verzweifelter cheat, um zu versuchen, um zu sehen, was Selen Sie tun will. Es funktioniert nicht immer.

InformationsquelleAutor loki | 2012-09-12
Schreibe einen Kommentar