2016-04-22 6 views
1

Ich versuche, ein Splitter-Skript auszuführen, um eine Menüoption auf der Webseite this zu finden.Verwenden von Splitter zur Auswahl aus einem dynamischen Menü

enter image description here

Die HTML-Menü sieht wie folgt aus:

<table border="0" cellpadding="0" cellspacing="0" width="100%" class="logo"> 
    <tbody><tr> 
    <td align="left" style="background : url('gfx/tab_fill.png'); background-repeat : repeat-x;"> 
     ... 
     <a href="variants"> 
      <img src="gfx/tab_variants_F.png" alt="View variants" id="tab_variants" width="58" height="25" align="left" class=""> 
     </a> 
     ... 
    </td> 
    </tr> 
</tbody></table> 

<ul id="menu_tab_variants" class="jeegoocontext" style="display: none; left: 180px; top: 90px;"> 
    <li class="icon"><a href="/variants" class=""> 
     <span class="icon" style="background-image: url(gfx/menu_magnifying_glass.png);"></span>View all genomic variants</a></li> 
    <li class="icon"><a href="/variants/in_gene" class=""> 
    <span class="icon" style="background-image: url(gfx/menu_magnifying_glass.png);"></span>View all variants affecting transcripts</a></li> 
    <li class="icon"><a href="/submit" class=""> 
     <span class="icon" style="background-image: url(gfx/plus.png);"></span>Create a new data submission</a></li> 
    ... 
</ul> 

Das Skript sollte ein Menü-Header schweben über, zeigen, was sichtbar ist, und dann aus ihm schweben und zeigen, welche Elemente sichtbar sind. Aber nichts scheint sichtbar zu sein.

from splinter import Browser 

browser = Browser('firefox', wait_time=10)  
browser.visit("http://databases.lovd.nl/shared/variants") 

tab_variants = browser.find_link_by_href("variants") 
print tab_variants 

tab_variants.first.mouse_over() 
print browser.find_link_by_partial_text(
    "View all genomic variants").first.visible 
print browser.find_link_by_partial_text(
    "View all variants affecting transcripts").first.visible 

tab_variants.mouse_out() 
print browser.find_link_by_partial_text(
    "View all genomic variants").first.visible 
print browser.find_link_by_partial_text(
    "View all variants affecting transcripts").first.visible 

ich diese Ausgabe:

[<splinter.driver.webdriver.WebDriverElement object at 0x18c29d0>] 
False 
False 
False 
False 

Bin ich die mouse_over Methode verwendet, wie es in splinter soll oder gibt es etwas über diese besondere Menü, das splinter kann nicht beschäftigen.

Antwort

1

Das Menü ist zum Zeitpunkt der Überprüfung der Eigenschaft .visible noch nicht sichtbar. Sie können jedoch warten, bis es mit der Maus in das Untermenü zu bewegen:

from splinter import Browser 

browser = Browser('firefox', wait_time=10) 
browser.visit("http://databases.lovd.nl/shared/variants") 

# move over the menu "Variant" 
browser.find_by_id('tab_variants').mouse_over() 
# move over the sub menu 
browser.find_by_id('menu_tab_variants').mouse_over() 

# print the menu items visibility 
print browser.find_link_by_text("View all genomic variants").visible 
print browser.find_link_by_text("View all variants affecting transcripts").visible 

# move the mouse out of the sub menu 
browser.find_by_id('menu_tab_variants').mouse_out() 

# print the menu items visibility 
print browser.find_link_by_text("View all genomic variants").visible 
print browser.find_link_by_text("View all variants affecting transcripts").visible 
+0

Vielen Dank für die Zeit mit, dass die Einnahme. Es ist so einfach, ein kleines aber signifikantes Detail wie dieses zu übersehen. – ChrisGuest

Verwandte Themen