如何使用selenium Webdriver处理Javascript点击?

时间:2015-04-23 07:32:33

标签: javascript selenium-webdriver

使用Selenium Webdiver。我的测试用例是。

  1. 登录网站。
  2. 点击通知链接。
  3. 点击通知链接时遇到问题,HTML代码如下: -

    <ul class="rghtSec fr menu logged"><li><a href="javascript:;">
      <div class="topIcon notify"><span>&nbsp;</span></div>
      <div class="mTxt">Notifications<span id="rJobCntr" class="rJobCntr"></span></div></a>
      <div class="subMenu recommendTT">
        <ul>
          <li><a target="_blank" class="blob" id="blobId" href="http://jobsearch.naukri.com/notifications">
    Fetching jobs you may apply for</a></li>
        </ul>
    

    我尝试过以下五种不同的方式:

    /*1*/ driver.findElement(By.xpath("//a[@class='mTxt']")).click();
    
    /*2*/ driver.findElement(By.cssSelector("div[class='topIcon notify']")).click();
    
    /*3*/ driver.findElement(By.linkText("Notifications")).click();
    
    /*4*/ driver.findElement(By.xpath("//div[@class='pNotifyCont dspN']")).click();
    
    /*5*/ Actions mouse=new Actions(driver);
       WebElement element=driver.findElement(By.xpath("//div[@class='pNotifyCont dspN']"));
       mouse.moveToElement(element).click().build().perform();
    

    Error : Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//a[@class='mTxt']"} Command duration or timeout: 7.56 seconds

    但这些方法都没有解决问题:(,有谁可以帮我解决这个问题?

2 个答案:

答案 0 :(得分:0)

请将您的xpath表达式替换为

driver.findElement(By.xpath("//div[contains(text(),'Notifications')]")).click();

Notifications位于div代码中。

如果要选择此Notifications链接下的元素,可以按照xpath进行操作:

driver.findElement(By.xpath("//div[contains(text(),'Notifications')]/following::a[1]")).click();

答案 1 :(得分:0)

您可以根据href属性值

直接点击该链接
driver.findElement(By.cssSelector("a[href*='notifications']")).click();

OR

driver.findElement(By.cssSelector("a[href=\"http://jobsearch.naukri.com/notifications\"]")).click();