【问题标题】:How do I count xpath using 2 elements?如何使用 2 个元素计算 xpath?
【发布时间】:2012-11-07 05:55:52
【问题描述】:

如果提交成功,我想统计星数。还可以为尚未提交的条目加星标。如果这些条目尚未提交,我想忽略这些条目,即使那些尚未提交的条目有星标。

这是我要数的代码:

<table>
  <tr id="entry_row_25494">
    <td>
      <img id="star_span_25494" img="" <="" src="/images/yes_star.png" onclick="toggleStar(25494);">
    </td>
    <td>
    <img title="Entry successfully submitted" alt="Entry successfully submitted" src="/images/greencirclecheck.png">
    </td>
  </tr>
  <tr id="entry_row_25496">
    <td>
      <img id="star_span_25496" img="" <="" src="/images/yes_star.png" onclick="toggleStar(25496);">
    </td>
    <td></td>
  </tr>
</table>

这就是我所拥有的:

$numOfStars = $this->getXpathCount("xpath=(//img[contains(@src, 'yes_star') and (contains(@src, 'greencirclecheck.png'))])")

这些是我迄今为止在 Selenium IDE 中使用 storeXpathCount 尝试过的方法

//table//img[@src='/images/yes_star.png' and @src='/images/greencirclecheck.png']
//table/tbody/tr[*]/td[*]/img[contains(@src, 'yes_star.png')]/parent::*[contains(@src, 'greencirclecheck.png')]
//img[contains(@src, 'greencirclecheck.png')]/preceding::img[contains(@src, 'yes_star.png')]
xpath=(//img[contains(@src, 'yes_star.png')]//img[contains(@src, 'greencirclecheck.png')])

但这些都行不通

如果您需要我澄清而不是投反对票,请告诉我。我是 Selenium 和 PHPUnit 的新手,所以问题可能不清楚。

【问题讨论】:

  • 你是说提交一个条目时会生成:
  • 是的,抱歉我漏掉了,当没有成功提交条目时,它是空白的
  • 查看我在stackoverflow.com/questions/12842182/imagetag-exists-in-the-tr/… 上的回复,因为这几乎是相同的。如果您有任何问题,请告诉我
  • @Falkenfighter 我尝试了您的回复,但无法正常工作。我尝试了不同的方法。
  • 每个表是否只有 2 列,如您的示例中那样?如果是这样,您希望找到您的第一个 标签 WebElement element = driver.findElement(By.xpath("//img[contains(@src, 'yes_star')")); 的 xpath,那么您可以向上导航两个元素 element = element.findElement(By.xpath("..")); 这样做两次以到达您的 然后检查您的第二张图片是否存在 @ 987654327@

标签: xpath selenium phpunit


【解决方案1】:
$counted = 0;
    $countEntries = $this->getXpathCount("//img[contains(@id, 'star_span')]");
    for($num = 1; $num <= $countEntries; $num ++) {
        $entry = $this->getAttribute("//tr[contains(@id, 'entry_row')][".$num."]@id");
        $newEntry = preg_replace("/[^0-9]/i", "", $entry);
        if($this->isElementPresent("//tr[@id='entry_row_".$newEntry."']//img[contains(@src, 'yes_star.png')]") && $this->isElementPresent("//tr[@id='entry_row_".$newEntry."']//input[contains(@checked, 'checked')]") == true) {
            $counted ++;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多