我怎样才能得到这个link元素?总是显示“无法找到带有链接文本的元素”==“搜索”

How can i get this link element? Always show "Unable to find element with link text == Search"

本文关键字:元素 搜索 文本 链接 link 显示      更新时间:2023-09-26

我正在学习硒与c#,我试图点击列表下的链接,但总是显示错误"无法找到元素与链接文本==搜索",代码如下:

<div id="ctl00_subNavMain_upSubMenu">
    <ul id="ctl00_subNavMain_subMenu">
        <li class="btnHome selected">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','0')">Home</a>
        </li>
        <li class="btnNew">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','1')">New Observation</a>
        </li>
        <li class="btnTestPlatform">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','2')">Test Platforms</a>
        </li>
        <li class="btnSearch">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','3')">Search</a>
        </li>
        <li class="btnOTS">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','4')">Remedy OTS</a>
        </li>
        <li class="btnBug">
            <a href="javascript:__doPostBack('ctl00$subNavMain$subMenu','5')">Bugzilla</a>
        </li>
    </ul>
</div>

我已经试过了:

            ReadOnlyCollection<IWebElement> links = driver.FindElements(By.XPath("//*[contains(text(),'Search')]"));
            MessageBox.Show(links.Count.ToString());
            foreach (IWebElement link in links)
            {
                if(link.TagName=="a")
             {
                    //MessageBox.Show(link.Displayed.ToString());
                    link.Click();                  
            }                            
           }

,但它显示错误"此元素不能被点击",我已经尝试使用"链接。显示的,都是假的,所以我怎么解决它,这对我来说是个大问题,谢谢!

我试过了:" MessageBox.Show(link.Enabled.ToString());" all return"true"

解决方案:"javascriptexecuter js= (javascriptexecuter)driver;js.executescript("参数[0]。点击()",链接);"非常感谢大家。

您可以在find元素中使用它作为xpath:

//*[包含(文本(),"搜索")]

我同意Hezi israel的观点。除非您正在寻找多个元素共同使用的字符串,否则最好使用'contains'而不是'='。我已经测试了在特定单词'之后有空格的网页,这导致我使用'='的xpath失败。使用'contains'可以保护你。