无法在Selenium C中使用LinkText导航#

时间:2014-01-17 14:49:30

标签: asp.net selenium selenium-webdriver

我从Selenium IDE获得了以下C#代码:

  driver.FindElement(By.LinkText("Sub Link 1")).Click();   

但由于它不起作用,我修改了下面的代码等待。它仍然无效。

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element =  wait.Until(ExpectedConditions.ElementExists(By.LinkText("Main Link 1")));
if (element != null)
{
    var innerElement = wait.Until(ExpectedConditions.ElementExists(By.PartialLinkText( 
         "Sub Link 1")));
}

可能出现什么问题?

我的HTML:

<html>
    <a href="#nav" title="Show navigation">Show navigation</a>
    <a href="#" title="Hide navigation">Hide navigation</a>
    <div id="navlogo"><a title="HOME" href="url">
         <span style="position:absolute;width:100%;height:100%;top:0;left: 0;">
         </span></a></div>
    <ul class="clearfix">
      <li><a href="">MXLMain1</a>
        <ul>
        <li><a href="">ML1</a>
        </li>
        <li><a href="">ML2</a>
        </li>
        </ul>
    </li>
    <li><a href="">MXLMain2</a>
    <ul>
        <li><a href="">MK2</a>
        </li>
    </ul>
    </li>
    <li><a href="">Main Link 1</a>
    <ul>
        <li><a href="">Sub Link 1</a>
        </li>
        <li><a href="">Sub Link 2</a>
        </li>
    </ul>
    </li>
..........................
</html> 

2 个答案:

答案 0 :(得分:0)

如何使用xpath?

driver.FindElement(By.XPath("//a[.='Sub Link 1")).Click();

答案 1 :(得分:0)

  1. 您尝试使用的链接似乎来自导航栏。您需要使用Seleniums Actions类来激活菜单下拉列表。
  2. 然后使用Actions类移动到元素并单击它。

    public void MouseHover(By locator) { element = driver.FindElement(locator); Actions action = new Actions(driver); action.MoveToElement(element).Perform(); }

  3. 点击相同的步骤。

    action.MoveToElement(element).Perform();
    action.Click().Perform();
    
    1. 转到初始元素
    2. 移至第二个元素并使用click方法