当前位置: 首页 > 知识库问答 >
问题:

href定位器在Selenium中仅对一种元素不起作用

郎正初
2023-03-14

我一直在写一些selenium脚本,从下拉列表中选择一些选项。当我将鼠标悬停在父列表上时,它会显示一个子列表,我可以从中选择一个选项。这个功能在很多元素中都运行良好,但我有一个功能导致了“ElementNotVisibleException”。

我已经附上了我一直在使用的代码的两个例子。上面的方法是有效的,但第二种方法我遇到了问题。如果有人能帮我解释为什么我会犯这个错误,我将不胜感激。

作品

    public static void creditNoteReportFocus(InternetExplorerDriver driver)
{
    driver.findElement(By.xpath("//a[contains(@href, 'CreditNoteReport')]")).sendKeys(Keys.ENTER);
}

不起作用

public static void earlySettlementWorkflowFocus(InternetExplorerDriver driver) throws InterruptedException
{
    driver.findElement(By.xpath("//a[contains(@href, 'EarlySettlementMatch?StartUpView=0')]")).sendKeys(Keys.ENTER);
}

HTML的代码片段

<div class="inner">
    <img alt="barney" runat="server" src="/DibsAndrew/images/chinook/gfx-topnav-left.gif"/>
    <ul class="drop-down-menu sub-nav">
        <li>
        <li>
        <li>
        <li>
            <a class="highlighted" href="/DibsAndrew/CCLReports/Overall">Reports</a>
            <ul id="ddm-86476" style="display: block;">
                <li>
                <li>
                    <a class="highlighted" href="#">Collections</a>
                    <span>»</span>
                    <ul style="display: block;">
                        <li>
                        <li>
                        <li>
                        <li>
                        <li>
                        <li>
                        <li>
                            <a class="highlighted"  href="/DibsAndrew/ETCalculator/EarlySettlementMatch?StartUpView=0">Early Settlement Workflow</a>
                        </li>

共有1个答案

松雅昶
2023-03-14

为了解决这个问题,我不得不使用绝对xpath。

 类似资料:
  • 我正在尝试为以下内容定位元素: 我尝试了XPath和CssSelector,但它无法定位元素。有人能帮我找到元素TIA吗

  • 我想在selenium中找到我的文本字段,但我不知道如何找到(我第一次使用sellenium)。 我试过: 或者通过xPath和cssSseltor String在dev工具中由chrome生成。 请帮助我,我将感谢解释。 这是html:

  • 我刚开始学习Selenium,需要使用云中的jenkins机器验证登录网页,该机器没有GUI。我成功地在有UI的系统上运行了脚本。然而,当我将脚本修改为运行headless时,它无法表示无法定位元素。我的脚本如下: 当不使用chrome_options时,python脚本在我的系统上运行良好。但是在将它们添加到无头模式下运行时,它会失败,输出如下: 由于我对Selenium有大约一天的学习时间,我

  • 我试着在网页上找到重构元素(时间-分钟)。我的代码只适用于前面的简单文本。现在我使用Ctrl Shift I并指出我的元素和“复制Xpath”。 此外,我还有一个Chrome扩展名“XPath helper”,并试图用它来实现这一点。XPath比我下面的代码要长。而且它也不起作用。 错误:NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“xpath”,

  • 在这种情况下使用any()的正确方式是什么?或者更好的是,需要做什么才能使这种方法发挥作用? 假设Selenium.get('url')在调用此方法之前已经执行。