如何使用SeleniumWeb驱动程序/Java验证表中的彩色编码背景
我想验证表中颜色编码背景的特定值。颜色代码是背景色:rgb(96192,96)。我在页面上有5个不同的链接。每个链接都有相同的背景色。我需要验证背景颜色是否显示为rgb(96192,96)的每个链接。如果颜色代码是其他RGB(96192,96),则代码应该考虑链接/服务器下降。 页面上显示的五个值/链接为Ssi-1-a、Ssi-2-a、Ssi-3-a、Ssi-4-a和Ssi-5-a 我如何使用Xpath或任何其他方法验证这一点?提供以下代码如何使用SeleniumWeb驱动程序/Java验证表中的彩色编码背景,java,html,selenium,xpath,colors,Java,Html,Selenium,Xpath,Colors,我想验证表中颜色编码背景的特定值。颜色代码是背景色:rgb(96192,96)。我在页面上有5个不同的链接。每个链接都有相同的背景色。我需要验证背景颜色是否显示为rgb(96192,96)的每个链接。如果颜色代码是其他RGB(96192,96),则代码应该考虑链接/服务器下降。 页面上显示的五个值/链接为Ssi-1-a、Ssi-2-a、Ssi-3-a、Ssi-4-a和Ssi-5-a 我如何使用Xpath或任何其他方法验证这一点?提供以下代码 <html> <head&g
<html>
<head>
<body>
<b>Status as of </b>
Wed Oct 25 16:57:57 2017
<br/>
<br/>
This page shows the current version and build date of the SSI code loaded into the JVMs that constitute the environment
you selected.
<br/>
<br/>
<br/>
<div style="float:left">
<table style="display:inline-table" width="500" border="1">
<tbody>
<tr>
<tr>
<tr>
<th>Prod</th>
<td style="background-color:rgb(96,192,96)" align="center">
<a href="https://XXXXXXXXXXXXXX-XXX.net:XXXXXX/ssiadmin/">Ssi-1-a</a>
</td>
</tr>
<tr>
<tr>
<tr>
<tr>
</tbody>
</table>
</div>
</body>
</html>
截至
2017年10月25日星期三16:57:57
此页面显示加载到构成环境的JVM中的SSI代码的当前版本和生成日期
你选择了。
戳
您可以使用WebElement的getAttribute方法来分析style属性的值。下面的代码应该让您大致了解如何执行此操作:
WebElement linkToCheck = driver.findElement(By.xpath("xpathOfTheLink"));
if(!linkToCheck.getAttribute("style").contains("rgb(96,192,96)")){
// server is down, --> does some action
}
其中XPathOfLink
是要检查的链接的xpath。如果您有5个不同的链接,则必须创建5个xpath,或者使用动态xpath,使用上面的代码检查循环中的每个xpath
要小心,因为正如这里提到的:
“style”属性将尽可能转换为带有尾随分号的文本表示形式
因此,您可能需要检查它是否包含“rgb(96192,96)”以外的内容。我允许您尝试,或者提供一个带有给定html的url,这样我就可以尝试(我很想看到结果)。您可以使用WebElement的getAttribute方法来分析style属性的值。下面的代码应该让您大致了解如何执行此操作:
WebElement linkToCheck = driver.findElement(By.xpath("xpathOfTheLink"));
if(!linkToCheck.getAttribute("style").contains("rgb(96,192,96)")){
// server is down, --> does some action
}
其中XPathOfLink
是要检查的链接的xpath。如果您有5个不同的链接,则必须创建5个xpath,或者使用动态xpath,使用上面的代码检查循环中的每个xpath
要小心,因为正如这里提到的:
“style”属性将尽可能转换为带有尾随分号的文本表示形式
因此,您可能需要检查它是否包含“rgb(96192,96)”以外的内容。我可以让你试试,或者提供一个带有给定html的url,这样我就可以试试(我很想看到结果)。截图并确定目标位置像素的颜色。您还可以使用
driver.findElement(…).getCssValue(“背景色”)
检查计算的样式。截图并评估目标位置像素的颜色。您还可以使用driver.findElement(…).getCssValue(“背景色”)
检查计算的样式。这仅在组件中固定了样式的情况下才有效,如果您使用的是css类,则将无法工作,因为css位于DOMDower外部。我已经使用它如下,它是工作。WebElement linkToCheck=driver.findElement(By.xpath(“html/body/div[1]/table/tbody/tr[3]/td”);字符串Colorcode=linkToCheck.getCssValue(“背景色”);System.out.println(色码);if(linkToCheck.getCssValue(“background color”).contains(“rgba(96,192,96,1)”){System.out.println(“我能看到颜色”);driver.findelelement(By.xpath(“html/body/div[1]/table/tbody/tr[3]/td/a”)。click();}否则{System.out.println(“我看不到颜色-现有代码”);}如何使用动态xpath来检查循环中的每个xpath?1)您需要找到一个指向5个链接的xpath。这个xpath可能会使用5个链接的本地化中的共同点。2) 你需要使用driver.findElements(xpathToAllFiveElements)
返回一个webElement列表,3)在循环中,你可以一个接一个地访问链接,这要感谢你拥有的webElement列表。这只有在组件中固定了样式的情况下才能工作,如果你使用的是css类,则无法工作,因为css位于DOM的外部,谢谢。我已经使用它如下,它是工作。WebElement linkToCheck=driver.findElement(By.xpath(“html/body/div[1]/table/tbody/tr[3]/td”);字符串Colorcode=linkToCheck.getCssValue(“背景色”);System.out.println(色码);if(linkToCheck.getCssValue(“background color”).contains(“rgba(96,192,96,1)”){System.out.println(“我能看到颜色”);driver.findelelement(By.xpath(“html/body/div[1]/table/tbody/tr[3]/td/a”)。click();}否则{System.out.println(“我看不到颜色-现有代码”);}如何使用动态xpath来检查循环中的每个xpath?1)您需要找到一个指向5个链接的xpath。这个xpath可能会使用5个链接的本地化中的共同点。2) 您需要使用driver.findElements(xpathToAllFiveElements)
返回webElement列表,3)在循环中,您可以一个接一个地访问链接,这要感谢您拥有的webElement列表。