我正在使用selenium webdriver 2.53.1与java和firefox 45.0.1并尝试在页面上检测带有隐藏类的加载器,但是我收到此错误消息:
给定的选择器// [@ class ='se-pre-con hidden-xs hidden-sm']无效或不会产生WebElement。发生以下错误: InvalidSelectorError:由于以下错误,无法找到具有xpath表达式// [@ class ='se-pre-con hidden-xs hidden-sm']的元素: SyntaxError:表达式不是合法表达式。
这是我想要检测的类:
<div class="se-pre-con hidden-xs hidden-sm"></div>
答案 0 :(得分:2)
您的xpath无效。在“//”之后,您需要添加您选择的元素或每个元素的通配符(*)。因此,正确的xpath将是//div[@class='se-pre-con hidden-xs hidden-sm']
或//*[@class='se-pre-con hidden-xs hidden-sm']
。
您可以使用WebDriverWait忽略StaleElementReferenceException并等待元素可见:
By elementSelector = By.xpath("//div[@class='se-pre-con hidden-xs hidden-sm']");
WebElement matchingElement = new WebDriverWait(driver, 10)
.ignoring(StaleElementReferenceException.class)
.until(ExpectedConditions.visibilityOfElementLocated(elementSelector));