Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过查找ID';来单击确切的元素;SeleniumWebDriver中有什么?_Java_Extjs_Selenium_Selenium Webdriver - Fatal编程技术网

Java 如何通过查找ID';来单击确切的元素;SeleniumWebDriver中有什么?

Java 如何通过查找ID';来单击确切的元素;SeleniumWebDriver中有什么?,java,extjs,selenium,selenium-webdriver,Java,Extjs,Selenium,Selenium Webdriver,在我的代码中,当通过ID搜索元素时,它正在单击其他元素。我如何才能找到确切的元素,并需要单击相同的元素。我正在将SeleniumWebDriver与java一起使用 Log.info("Clicking on Overview and Evolution PR link"); driver.findElement(By.id("ext-pr-backlog-evolution")).click(); WebDriverWait wait = new WebDriverWait(driver, 1

在我的代码中,当通过ID搜索元素时,它正在单击其他元素。我如何才能找到确切的元素,并需要单击相同的元素。我正在将SeleniumWebDriver与java一起使用

Log.info("Clicking on Overview and Evolution PR link");
driver.findElement(By.id("ext-pr-backlog-evolution")).click();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-pr-backlog-evolution")));

我试图单击“概述与发展”选项卡,但它正在单击“分配的平均时间”选项卡

整个HTML如下所示:

<li>
    <a id="ext-pr" class="submenu ext-pr" name="ext-pr" href="https://10.4.16.159/reports/">Problem Reports (PR)</a>
    <ul>
        <li>
            <a id="ext-pr-backlog-age" class=" ext-pr-backlog-age" name="ext-pr-backlog-age"    href="https://10.4.16.159/extranet_prbacklogage/reports/type/default/">Age</a>
        </li>
        <li>
            <a id="ext-timetoassign-prs" class=" ext-timetoassign-prs" name="ext-timetoassign-prs" href="https://10.4.16.159/extranet_timetoassignprs/reports/type/default/">Average Time To Assign</a>
        </li>
        <li>
            <a id="ext-timetodeliver-prs" class=" ext-timetodeliver-prs" name="ext-timetodeliver-prs" href="https://10.4.16.159/extranet_timetodeliverprs/reports/type/default/">Average Time To Deliver</a>
        </li>
        <li>
            <a id="ext-timetoresolve-prs" class=" ext-timetoresolve-prs" name="ext-timetoresolve-prs" href="https://10.4.16.159/extranet_timetoresolveprs/reports/type/default/">Average Time To Resolve</a>
        </li>
        <li>
            <a id="ext-new-prs" class=" ext-new-prs" name="ext-new-prs" href="https://10.4.16.159/extranet_newprs/reports/type/default/">New</a>
        </li>
        <li>
            <a id="ext-open-prs" class=" ext-open-prs" name="ext-open-prs" href="https://10.4.16.159/extranet_openprs/reports/">Open</a>
        </li>
        <li>
            <a id="ext-pr-backlog-evolution" class=" ext-pr-backlog-evolution" name="ext-pr-backlog-evolution" href="https://10.4.16.159/extranet_prbacklogevolutiontendency/reports/type/default/">Overview & Evolution</a>
        </li>
        <li>
            <a id="ext-pr-domain" class=" ext-pr-domain" name="ext-pr-domain" href="https://10.4.16.159/extranet_prperdomain/reports/">Per Prod/SW Pack/RDT Group</a>
        </li>
        <li>
            <a id="ext-pr-tendency" class=" ext-pr-tendency" name="ext-pr-tendency" href="https://10.4.16.159/extranet_prtendency/reports/type/default/">Progression</a>
        </li>
        <li>
            <a id="ext-rework-prs" class=" ext-rework-prs" name="ext-rework-prs" href="https://10.4.16.159/extranet_reworkprs/reports/type/default/">Rework</a>
        </li>
        <li>
            <a id="ext-pr-timetosolveprs" class=" ext-pr-timetosolveprs" name="ext-pr-timetosolveprs" href="https://10.4.16.159/extranet_timetosolveprs/reports/type/default/">Time To Solve</a>
        </li>
    </ul>
</li>

  • 请找到解决方案。如何准确单击元素..

    由于
    id
    是唯一的,因此您只需使用:

    $('#ext-pr-backlog-evolution').click(function() {
         // Your code here
    });
    

    在这个阶段,我不能复制任何东西。如果该网站是公开可见的,请提供链接

    您现在可以尝试更改定位器和单击方法。每次应用一个定位器和一个单击方法,您应该至少有7*3=21次尝试

    基本代码:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.id("ext-pr-backlog-evolution")));
    driver.findElement(By.id("ext-pr-backlog-evolution")).click();
    
    不同的定位器:

    By.id("ext-pr-backlog-evolution") // current, not working
    By.cssSelector("#ext-pr-backlog-evolution")
    By.cssSelector(".ext-pr-backlog-evolution")
    By.cssSelector("href[*='extranet_prbacklogevolutiontendency/reports']")
    By.xpath(".//a[@id='ext-pr-backlog-evolution']")
    By.cssSelector(".//a[contains(@class, 'ext-pr-backlog-evolution')]")
    By.cssSelector(".//a[contains(@href, 'extranet_prbacklogevolutiontendency/reports')]")
    
    不同的点击方式:

    正常点击

    driver.findElement(one_of_the_locators_above).click();`
    
    动作点击

    new Actions(driver).click(driver.findElement(one_of_the_locators_above)).perform();
    
    JavaScript点击

    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", driver.findElement(one_of_the_locators_above));
    

    我遵循了你提到的方式,但也显示了相同的错误。我已经发布了整个HTML。请给我建议任何解决方案,我不会投反对票,但这是完全错误的。这里的上下文是Selenium。我并没有否决它,因为OP实际上加入了一个jQuery标记(所以这实际上不是你的错)——我现在已经删除了它。