如何在点击链接时调用javascript时获取selenium webdriver中的href值?

时间:2016-08-24 08:09:31

标签: javascript selenium selenium-webdriver

感谢您查看我的查询。在网页上,有超过200个链接&amp;我确保所有人都在工作。获取link值后很容易,但问题是,&#39; href&#39;值不包含<a tabindex="8" title="Internal Crossload" target="_self" href="javascript:fnnHomePage('3' , 'WTMS_EXPRESS')">&nbsp;&nbsp;&nbsp;&nbsp;- Internal Crossload </a> 而不是“javaScript函数”。这是一个来源

<Script>
    /*********************************************************************
    Function Name          : fnnHomePage
    Input Parameter(s)     : transferTypeId
    Output Parameter(s)    : None
    **********************************************************************/
    function fnnHomePage(transferTypeId ,moduleName) {
        if (moduleName == "XXX_EXPRESS")
     {
            document.getElementById("transferTypeId").value=transferTypeId;
            document.getElementById("gadgetType").value="XXX_EXPRESS";
            document.getElementById("moduleName").value="XXX_EXPRESS";
            document.forms[0].action="/XXX/getProposalHomePage.do?transferTypeId="+transferTypeId;
        document.forms[0].submit();
     }
        if (moduleName ==  "CROSSLOAD")
         {
            document.getElementById("transferTypeId").value=transferTypeId;
            document.getElementById("gadgetType").value="CROSSLOAD";
            document.getElementById("moduleName").value="CROSSLOAD";
            document.forms[0].action="/XXX/getCrossLoadHomePage.do?transferTypeId="+transferTypeId;
            document.forms[0].submit();
         }
    }
</Script>

JavaScript函数:

$(".acal-confirm").click(function(){

  if($(this).val() == 'delete'){
    if (!confirm("Delete all positions for this day?")){
      return false;
    }
  }

  if($(this).val() == 'publish'){
    if (!confirm("Publish all positions for this day?")){
      return false;
    }
  }

  if($(this).val() == 'draft'){
    if (!confirm("Save all positions for this day as a draft?")){
      return false;
    }
  }

});

从上面的代码中,我如何获得&#39; 链接&#39;并检查它是否在selenium webdriver中正常工作?有几个链接&amp;每个人都会调用不同的JavaScript函数。任何建议都将受到赞赏。谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的技巧点击链接。它会将您重定向到javascript函数生成的新链接。然后,使用driver.getCurrentUrl();获取链接,然后返回原始页面,照常完成您的工作。

我希望,这是有道理的。

答案 1 :(得分:-1)

以下是工作代码,您可以使用此代码查看控制台上的所有链接,还可以导航到所有链接:

 driver.get("https://www.facebook.com");
    List<WebElement> all_links_webpage = driver.findElements(By.tagName("xyz")); 
    System.out.println("Total no of links Available: " + all_links_webpage.size());
    int links = all_links_webpage.size();
    System.out.println("List of links Available: ");
    for(int i=0;i<links;i++)
    {
    if(all_links_webpage.get(i).getAttribute("href").contains("google"))
    {
    String link = all_links_webpage.get(i).getAttribute("href");
    System.out.println(link);
    }   
    }

希望这能解决您的问题。