【问题标题】:Selenium webdriver: How to check an img element really have height attributeSelenium webdriver:如何检查一个img元素是否真的有高度属性
【发布时间】:2020-07-12 03:52:36
【问题描述】:

在 chrome 上的 java Selenium web 驱动程序中,我需要确保图像具有高度属性。我的 HTML 代码是这样的:

<img src="https://www.w3schools.com/tags/img_girl.jpg">

我正在尝试执行

 boolean s = driver.findElement(By.tagName("img")).getAttribute("height") !=null;

但这总是返回 true 虽然没有高度属性!如果我尝试执行

String s = driver.findElement(By.tagName("img")).getAttribute("height");

尽管 HTML 代码中没有高度属性,但我会得到 600。有没有其他方法可以检查?

【问题讨论】:

  • 如果有帮助,请参考this SO 帖子
  • 该元素的OuterHTML好吗?
  • @KuldeepKamune 不,它没有用。它仍然返回图像的实际高度和宽度(即使图像没有高度和宽度属性)我需要知道的是图像是否具有高度属性。
  • @DebanjanB 没有外部 HTML 我需要在页面上的每个图像上检查它。
  • @FaezehShayesteh:嘿,抱歉,我第一次没有得到你的问题。我已经发布了回答方法,通常我使用它来验证尺寸。请检查它是否有帮助。

标签: selenium testing selenium-webdriver


【解决方案1】:

试试这个例子:

@Test
public void testHeightAttribute(){
    driver.get("https://webelement.click/en/welcome");
    WebElement img = driver.findElement(By.xpath("//img[1]"));
    System.out.println(img.findElements(By.xpath(".[@height]")).size());
    System.out.println(img.findElements(By.xpath(".[@src]")).size());
}

我不确定这是不是最优雅的方式 :)。这个想法是您正在使用元素本身作为搜索上下文来查找元素(在其内部查找元素)。如果 DOM 中不存在任何属性,则列表将为空 (size() == 0)。否则它将是1

一般的方法基本上是这样的:

public boolean hasAttributeInDom(WebElement element, String attr){
    return !element.findElements(By.xpath(".[@" + attr + "]")).isEmpty();
}

【讨论】:

  • 谢谢。使用 xpath 为我唤醒,但我无法在 ing 上调用 findElement(我不知道为什么)我可以通过像这样直接寻址它来使其工作: int imagesWidthNum = driver.findElements(By.xpath("//img[@宽度]")).size()
  • 当你说调用findElement 而不是img 有问题时,你的意思是如果你复制粘贴我的代码你有问题吗?或者您尝试将其应用于您的案例并遇到问题?
【解决方案2】:

您可以在开发者工具的styles 部分查看高度参数。请参阅来自堆栈溢出的示例图像的附加屏幕截图。您可以在右侧看到height 参数。这里一般都会提到维度。

您将需要了解并在 Styles 部分中查找特定的图像属性,作为整个页面的显示 CSS 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2015-02-03
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多