我正在测试页面上的元素(如//img
或//i
(是否具有alt
属性。
我找不到一种方法来检测该属性何时根本不存在。
这是WebElement。只是一个没有alt属性的img。
<img class="gsc-branding-img" src="https://www.google.com/cse/static/images/1x/googlelogo_grey_46x15dp.png" srcset="https://www.google.com/cse/static/images/2x/googlelogo_grey_46x15dp.png 2x"/>
这是我试图确定alt存在的代码。我知道这不是全部必要的,我只是尝试了一切。
WebElement we == driver.findElement(By.xpath("(//img)[1]"));
String altAttribute = we.getAttribute("alt");
if(altAttribute == null || altAttribute =="" || altAttribute == " ")
{
//attribute not found
}
似乎它正在返回一个空字符串...例如,以下代码返回"beforeAfter">
System.out.println("before"+altAttribute+"After");
但是,我的if
语句没有抓住回报,所以我不知道该怎么办。
如果该属性不存在,它应该返回 null,如果它存在且未设置,那么它将返回空字符串。如果是这样,我认为在你的例子中就是这种情况。然后,您应该使用equal
方法来比较字符串而不是==
运算符。
下面的示例是关于谷歌搜索框的,搜索框不存在 xxx 属性,因此它将返回 null
driver = new ChromeDriver();
driver.get("http://google.com");
WebElement ele = driver.findElement(By.name("q"));
String attr = ele.getAttribute("xxx");
if (attr == null){
System.out.print("Attribute does not exist");
}
else if (attr.equals("")){
System.out.print("Attribute is empty string");
}
您可以通过编写以下 html 并将其另存为 test.html 来自己尝试:
<html>
<head>
</head>
<body>
<p id="one">one</p>
<p id="two" data-se="">two</p>
<p id="three" data-se="something">three</p>
</body>
</html>
然后编写如下所示的 Web 驱动程序脚本:
driver.get("file:///<PATH_TO_HTML_ABOVE>/test.html");
WebElement one = driver.findElement(By.id("one"));
WebElement two = driver.findElement(By.id("two"));
WebElement three = driver.findElement(By.id("three"));
System.out.println("Does one have the data-se attribute?: '" + one.getAttribute("data-se") + "'");
System.out.println("Does two have the data-se attribute?: '" + two.getAttribute("data-se") + "'");
System.out.println("Does three have the data-se attribute?: '" + three.getAttribute("data-se") + "'");
这将为您提供以下输出:
Does one have the data-se attribute?: 'null'
Does two have the data-se attribute?: ''
Does three have the data-se attribute?: 'something'
List<WebElement> elems = driver.findElements(By.cssSelector("img:not([alt])"));
if (elems.size() > 0) {
// found images with alt attribute missing
}
我认为您需要先处理空值。 if(null == we.getAttribute("alt")){ }
以下是您问题的答案:
尝试通过其他一些独特的xpath
查找WebElement
,如下所示:
WebElement we = driver.findElement(By.xpath("(//img[@class='gsc-branding-img']"));
或
WebElement we = driver.findElement(By.xpath("//img[contains(@src,'googlelogo_grey_46x15dp.png')]"));
让我知道这是否回答了您的问题。
假设we
是 Web 元素<img class="gsc-branding-img" ...
。
-
we.getAttribute("blabla")
返回null
-
we.getAttribute("class")
返回"gsc-branding-img"
因此,我们可以像这样检查:
if(we.getAttribute("blabla") == null){
System.out.println("Attribute does not exist");
}
else {
System.out.println("Attribute exists!");
}
同样,对于硒的python绑定:
we.get_attribute('blabla')
返回None