作为测试的一部分,该系统应该确定用于打开网站的设备是移动设备还是普通台式机。
我不断收到错误:
“ InvalidSelectorError:无法使用xpath表达式// * [包含(@class,is-mobile …
萤火虫的属性:
<body class="login-page is-desktop">
我的测试:
public class isMobile { public static boolean isMobile = false; public static boolean checkIfMobile(WebDriver driver) throws Exception { List<WebElement> list = driver.findElements(By .xpath("//body[contains(@class, 'is-mobile'")); if (list == null) { return false; } else { return true; } } }
有人可以告诉我正确的XPath应该是什么吗?
您似乎缺少右括号和右括号:
更改此:
//body[contains(@class, 'is-mobile'
变成这个:
//body[contains(@class, 'is-mobile')]
附带说明一下,请考虑到此代码还有另一个隐蔽的问题,那就是您将匹配不希望匹配的内容,例如此类class属性:login-page not-is- mobile。
login-page not-is- mobile
无法像使用CSS3选择器那样简单地进行匹配[class~="is-mobile"]。但是,您可以这样做:
[class~="is-mobile"]
//body[contains(concat(' ', @class, ' '), ' is-mobile ')]
所有这些空格都在其中,以确保您只会在空格之间匹配某些内容,即使它位于class属性的开头或结尾,也要匹配。
这确实很丑陋,但这就是XPath的实现方式。