2016-04-22 22 views
1

我试图运行一个分裂脚本,以便在this网页中找到菜单选项。使用分裂从动态菜单中选择

enter image description here

菜单的HTML看起来像这样:

<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> 

脚本应该菜单标题悬停,显示什么是可见的,然后悬停了出来,并显示哪些元素是可见的。但没有任何可见的。

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 

我得到这样的输出:

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

现在用我的MOUSE_OVER方法,因为它意在splinter或者是有什么关于splinter无法处理这种特殊的菜单。

回答

1

该菜单在您检查.visible属性时尚不可见。然而,您可以通过将鼠标移动到子菜单来等待:

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

感谢您抽出宝贵的时间。很容易错过这样一个小而重要的细节。 – ChrisGuest