首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取菜单链接

提取菜单链接
EN

Stack Overflow用户
提问于 2015-10-23 15:13:48
回答 2查看 147关注 0票数 2

我想得到所有的菜单页面链接,以便从每个菜单页面提取产品,这里是菜单的HTML代码

代码语言:javascript
复制
<nav id="cavas_menu" class="navbar navbar-default" role="navigation">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div id="leo-top-menu" class="collapse navbar-collapse navbar-ex1-collapse">
            <ul class="nav navbar-nav megamenu"><li class=" parent dropdown aligned-left ">
                    <a href="#" class="dropdown-toggle has-category" data-toggle="dropdown" target="_self"><span class="menu-title">Categories</span><b class="caret"></b></a><div class="dropdown-sub dropdown-menu" style="width:400px"><div class="dropdown-menu-inner"><div class="row"><div class="mega-col col-sm-6"> <div class="mega-col-inner "><div class="leo-widget"><div class="widget-subcategories">
        <div class="widget-inner">
        <div class="menu-title">Home</div>
        <ul>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/14-e-juices" title="E-Juices" class="img">
                        E-Juices 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/15-mods" title="Mods" class="img">
                        Mods 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/17-accessories" title="Accessories" class="img">
                        Accessories 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/19-starter-kits" title="Starter Kits" class="img">
                        Starter Kits 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/21-ego" title="Ego" class="img">
                        Ego 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/27-rda" title="RDA" class="img">
                        RDA 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/28-regulated-mods" title="Regulated Mods" class="img">
                        Regulated Mods 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/29-clearomizer" title="Clearomizer" class="img">
                        Clearomizer 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/30-drip-tips" title="Drip Tips" class="img">
                        Drip Tips 
                    </a>
                </li>
                            <li class="clearfix">
                    <a href="https://www.vapors.com/33-sales" title="Sales" class="img">
                        Sales 
                    </a>
                </li>

        </ul>
    </div>
</div>
 </div></div></div><div class="mega-col col-sm-6"> <div class="mega-col-inner "><div class="leo-widget"> <div class="widget-products">
        <div class="menu-title">
        New Products
    </div>
        <div class="widget-inner">

                <div class="product-block">










             <div class="product-container clearfix">   
                    <div class="image ">
                            <a class="product_img_link" href="https://www.vapors.com/rda/794-plume-veil-v25-limited-ed.html" title="Plume Veil V2.5 Limited Ed." itemprop="url">
                                <img class="replace-2x img-responsive" src="https://www.vapors.com/307-home_default/plume-veil-v25-limited-ed.jpg" alt="Plume Veil V2.5 Limited Ed." title="Plume Veil V2.5 Limited Ed." itemprop="image">
                        </a>
                                                            <span class="new-box">
                                    <span class="new-label">New</span>
                                </span>
                                                </div>
                    <div class="product-meta">
                            <h5 itemprop="name">
                                                                <a class="product-name" href="https://www.vapors.com/rda/794-plume-veil-v25-limited-ed.html" title="Plume Veil V2.5 Limited Ed." itemprop="url">
                                    Plume Veil V2.5 Limited Ed.
                                </a>
                            </h5>
                            <p class="product-desc" itemprop="description">

                            </p>    
                                                            <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" class="content_price">
                                                                            <span itemprop="price" class="price product-price">
                                            $89.99                                      </span>
                                        <meta itemprop="priceCurrency" content="1">
                                                                                            </div>
                                                    </div>
                </div>                  



             <div class="product-container clearfix">   
                    <div class="image ">
                            <a class="product_img_link" href="https://www.vapors.com/rda/793-plume-veil-v25.html" title="Plume Veil V2.5" itemprop="url">
                                <img class="replace-2x img-responsive" src="https://www.vapors.com/306-home_default/plume-veil-v25.jpg" alt="Plume Veil V2.5" title="Plume Veil V2.5" itemprop="image">
                        </a>
                                                            <span class="new-box">
                                    <span class="new-label">New</span>
                                </span>
                                                </div>
                    <div class="product-meta">
                            <h5 itemprop="name">
                                                                <a class="product-name" href="https://www.vapors.com/rda/793-plume-veil-v25.html" title="Plume Veil V2.5" itemprop="url">
                                    Plume Veil V2.5
                                </a>
                            </h5>
                            <p class="product-desc" itemprop="description">
                                This all new version of the Veil is a Sub-Ohm V2.5 RDA by...
                            </p>    
                                                            <div itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" class="content_price">
                                                                            <span itemprop="price" class="price product-price">
                                            $89.99                                      </span>
                                        <meta itemprop="priceCurrency" content="1">
                                                                                            </div>
                                                    </div>
                </div>                  


        </div>



    </div>
</div>
</div></div></div></div></div></div></li><li class="active">
                        <a href="https://www.vapors.com/14-e-juices" target="_self" class="has-category"><span class="menu-title">E-Juices</span></a></li><li class="">
                        <a href="https://www.vapors.com/15-mods" target="_self" class="has-category"><span class="menu-title">Mods</span></a></li><li class="">
                        <a href="https://www.vapors.com/28-regulated-mods" target="_self" class="has-category"><span class="menu-title">Regulated Mods</span></a></li><li class="">
                        <a href="https://www.vapors.com/27-rda" target="_self" class="has-category"><span class="menu-title">RDA</span></a></li><li class="">
                        <a href="https://www.vapors.com/19-starter-kits" target="_self" class="has-category"><span class="menu-title">Starter Kits</span></a></li><li class="">
                        <a href="https://www.vapors.com/29-clearomizer" target="_self" class="has-category"><span class="menu-title">Clearomizer</span></a></li><li class="">
                        <a href="https://www.vapors.com/30-drip-tips" target="_self" class="has-category"><span class="menu-title">Drip tips</span></a></li><li class="">
                        <a href="https://www.vapors.com/21-ego" target="_self" class="has-category"><span class="menu-title">Ego</span></a></li><li class="">
                        <a href="https://www.vapors.com/17-accessories" target="_self" class="has-category"><span class="menu-title">Accessories</span></a></li><li class="sales">
                        <a href="https://www.vapors.com/33-sales" target="_self" class="has-category"><span class="menu-title">Sales</span></a></li></ul>
        </div>
</nav>

我需要得到所有的href链接,并点击每个链接来执行一些操作。

下面是我尝试过的代码,但得到的输出为空:

代码语言:javascript
复制
 List<WebElement> cat=driver.findElements(By.xpath("//*[@id='cavas_menu']"));


     for (WebElement catmenu : cat){

         System.out.println(catmenu.getAttribute("href"));


     }
    }
EN

回答 2

Stack Overflow用户

发布于 2015-10-24 12:31:21

你的代码有几个问题。

1)您的XPath在List<>中将只有1个元素,因为只有一个元素带有id=cavas_menu

代码语言:javascript
复制
<nav id="cavas_menu" class="navbar navbar-default" role="navigation">

这不是你要找的。您需要该菜单中的链接。

2)第二个问题是Selenium只与可见元素交互,而您想要的元素(链接)位于菜单内,因此您需要悬停菜单以显示和抓取它们。

我测试了下面的代码,它可以工作。

代码语言:javascript
复制
driver.get("https://www.vapors.com/");

// dismiss Age Certification dialog
driver.findElement(By.cssSelector("a.over-18")).click();

// hover the menu to expose it
Actions builder = new Actions(driver);
builder.moveToElement(driver.findElement(By.cssSelector("span.menu-title"))).build().perform();

// gather the links and print the HREFs
List<WebElement> links = driver.findElements(By.cssSelector("a.img"));
for (WebElement link : links)
{
    System.out.println(link.getAttribute("href"));
}
票数 2
EN

Stack Overflow用户

发布于 2015-10-23 15:38:22

我看过你的代码,下面是一个稍微修改过的版本:

代码语言:javascript
复制
  public void sample() {
    driver.get("C:\\Users\\dmalinovschi\\Desktop\\index.html");
        List<WebElement> listElements;
        listElements =  driver.findElements(By.xpath("//li[@class='clearfix']/a"));

        for (int i=0; i<listElements.size(); i++) {
            String link = listElements.get(i).getAttribute("href");
           System.out.println(link);
        }
}

以下是在新选项卡中打开它们的变体:

代码语言:javascript
复制
  public void sample() throws InterruptedException {
    driver.get("base website link");

        List<WebElement> listElements;
        listElements =  driver.findElements(By.xpath("//li[@class='clearfix']/a"));
        Actions builder = new Actions(driver);
        Actions control =   builder.keyDown(Keys.CONTROL);
        for (int i=0; i<listElements.size(); i++) {

            String link = listElements.get(i).getAttribute("href");
            System.out.println(link);

            control.click(listElements.get(i));
            builder.build().perform();;
            Thread.sleep(2000);

        }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33296720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档