java - 如何通过在 Selenium WebDriver 中查找 ID 来单击确切的元素?

标签 java extjs selenium selenium-webdriver

在我的代码中,当通过 ID 搜索元素时,它正在单击其他元素。我怎样才能找到确切的元素并需要单击相同的元素。我正在使用 Selenium WebDriverjava

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")));

enter image description here

我试图点击Overview & Evolution标签,但它点击的是Average Time to Assign标签

整个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>

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

最佳答案

在这个阶段,我无法重现任何东西。如果该网站是公开可见的,请提供链接。

您现在可以尝试更改您的定位器和点击方法。每次应用一种定位器和一种点击方法,您应该至少尝试 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();`

Action 点击

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));

关于java - 如何通过在 Selenium WebDriver 中查找 ID 来单击确切的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298500/

相关文章:

java - 多进程 Java 程序在其运行的 JVM 下的实际机器上下文中是单个进程吗?

java - 将值发送到线性布局

extjs - 防止网格面板的键盘多选

Extjs - 更改 labelAble 样式上的默认无效字段 messageTarget

Java selenium getPageSource 不工作

java - 仅在 Java 中对键进行排序的 Multimap

java - j8583:ISOMessage 解析器未按预期生成输出

javascript - 使用 Jasmine 2.0 和 PhantomJS 对 ext js 进行单元测试

java - 使用 Java 的多个 Selenium 参数化 Web 测试

selenium - 实习生 Leadfoot WaitForAddedById 功能?