【问题标题】:I am unable to locate an element我无法找到元素
【发布时间】:2014-04-08 06:15:47
【问题描述】:
<table width="100%" cellspacing="1" cellpadding="0">
    <tbody>
        <tr>
        <tr>
        <tr>
            <td class="tblForeground">
                <table id="defaultaccess" width="100%" cellspacing="0" cellpadding="0">
                    <tbody>
                    <tr>
                    <tr>
                    <tr>
                    <tr>
                    <tr>
                        <td valign="TOP" align="LEFT" scope="rowgroup">
                            <img width="12" height="12" border="0" alt="" src="/img/8space.gif">
                            <img width="16" height="16" border="0" alt="Public Access" src="/img/publicaccess.gif">
                            <a target="info" href="/Livelink/livelink.exe?func=ll&amp;objAction=EditAcl&amp;objId=9388&amp;id=9388&amp;rightId=-1&amp;permType=3&amp;nextURL=%2FLivelink%2Flivelink%2Eexe%3Ffunc%3Dll%26objid%3D2000%26objAction%3Dbrowse%26sort%3Dname">Public Access</a>

在上面的表格 html 代码中,我想找到带有文本“Public Acess”的“a”标签。但是当我使用下面的代码时,它会显示一个错误,因为我无法找到该元素。下面是代码:

WebElement       element1 = driver.findElement(By.className("tblForeground"));
List<WebElement> list1    = element.findElements(By.id("defaultaccess"));

for (int i = 0; i < list1.size(); i++)  {
if (list1.get(i).findElement(By.tagName("a")).getText().equals("Public Access")) {
    list1.get(i).findElement(By.tagName("a")).click();
        break;
    }

}

您能帮我找到上表中的特定元素吗? 提前致谢。

【问题讨论】:

  • 你试过用selenium ide来记录定位器吗?
  • 是的,我试过了,但它没有得到在 selenium ide 中它只显示断言标题

标签: java selenium-webdriver


【解决方案1】:

更改以下内容:

List<WebElement> list1    = element.findElements(By.id("defaultaccess"));

List<WebElement> list1    = element.findElements(By.xpath("//table[@id='defaultaccess']/tbody/tr/td"));

由于a标签在table -&gt; tbody -&gt; tr -&gt; td标签下

【讨论】:

  • 是的,但它没有找到类名 'tblBackground' 本身。
  • 你遇到了什么错误?如果是元素NoSuchElementError,则检查该元素是否在iframe 内。如果它在iframe 内,则首先切换到该iframe,然后找到该元素
  • 是的,它在 iframe 中,我得到了那个 iframe,没有错误和警告,但它仍然没有找到那个元素....
  • 我的意思是我将 for 循环保留在主 for 循环本身中。因此它没有显示任何错误。
【解决方案2】:

你好,试试这个:

int nr = driver.findElements(By.xpath("//td[contains(@class,\"tblForeground\")]/table/tbody/tr")).size();
        for (int i = 1; i <= nr; i++)
        {
            try{
            driver.findElement(By.xpath("//td[contains(@class,\"tblForeground\")]/table/tbody/tr[" + i + "]/td/a[contains(text(),\"Public Access\")]")).click();
            } catch (NoSuchElementException e){
            }
        }

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 2021-10-19
    • 2020-06-14
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多