与Selenium错误的xpath说isIisplayed()是真的

时间:2017-02-22 11:41:07

标签: selenium selenium-webdriver

我正在使用Selenium搜索网页中的元素。我在type="number"上使用包装器类和包装器方法,并使用xml将键传递给包装器。所以,这一点运作良好。最近,我不得不在不同的设置中找到许多具有类似className和不同xpath的元素。我尝试使用className创建自定义xpath,并尝试使用不同的特定属性来标识元素。页面结构类似于:

findElement()

我使用的xpath是:

<span class="app-icon">
<img class="app-icon-large" alt="WorkForce1" src="https://someWebAddress"/>
</span>

问题是,如果我用workXPATH = .//span[1]/img[@alt="Workforce1"] 之类的随机字替换Workforce1 zenith方法仍然返回true。并且dom结构中不存在天顶。这让我抓狂了头。有谁知道为什么这种方式有效? 代码是:

isDisplayed()

2 个答案:

答案 0 :(得分:0)

IsDisplayed()返回True

这是因为您的HTML源代码中找到了(XPath)。

所以有效 e.g。

WebElement Image = driver.findElement(By.xpath("//*[@id='registrationForm']/div[13]/span/img")); // here you need to find unique value for your xpath if that repeated in the source

所以: Image.get意味着什么

如果您需要从html属性

返回值
Image.getAttribute("alt").equals("your expected results");

答案 1 :(得分:0)

试试这种方式。

说明:首先使用workForce1属性获取alt图片的字符串。

现在使用xpath定位器查找WebElement。
然后使用if条件比较StringWebElement

String workForce1_text = driver.findElement(By.xpath("//span/img[@alt='WorkForce1']")).getAttribute("alt");
System.out.println(workForce1_text);

WebElement element = driver.findElement(By.xpath("//span/img[@alt='WorkForce1']"));     
if(element.getAttribute("alt").contentEquals(workForce1_text))
{
    /*your action goes here.*/
}