我无法在Eclipse上使用phantomJS和Selenium Web-Driver自动执行某些功能测试,也许你们可以帮助我。
我有一张产品卡,显示当您在其上执行悬停时由JavaScript隐藏的三个元素,有两个选择和一个按钮。
没有找到选择,我通过添加'来解决这个问题。悬停'在div类上,使动画能够显示元素:
((JavascriptExecutor)driver).executeScript("document.getElementById('card--').className+=(' hover');");
这样我就可以在选择中设置模型和数量。
但是当我尝试在按钮上发送单击操作时,Selenium会返回该元素不可见且可能无法操作。
我已尝试将显示设置为'阻止'在div上显示这些元素,使用以下代码,但仍然无效:
((JavascriptExecutor)driver).executeScript("document.getElementsByClassName('o-card__add')[0].style['display']='block';");
我已经尝试过使用JavascriptExecutor使用arguments[0].click
对其执行强制点击,但仍然没有效果。
我开始感到绝望了。 这是完整的方法代码:
public SearchResultsPage selectProdModel() {
wait = new WebDriverWait(driver, GlobalVariables.timeout);
wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(productCard, 0));
//Forces the hover on the card
((JavascriptExecutor)driver).executeScript("document.getElementById('card--').className+=(' hover');");
WebElement prodCard = driver.findElement(productCard);
//Verify if it has the model selector
if(prodCard.findElement(productModel).isDisplayed()) {
select = new Select(prodCard.findElement(productModel));
List<WebElement> models = select.getOptions();
for(int x = 1; x < models.size(); x++) {
if(!models.get(x).getText().contains("Esgotado")) {
select.selectByValue(models.get(x).getAttribute("value"));
break;
}
}
}
//From here starts the problem
((JavascriptExecutor)driver).executeScript("document.getElementsByClassName('o-card__add')[0].style['display']='block';");
WebElement cardAdd = prodCard.findElement(By.cssSelector(".o-card__add"));
cardAdd.findElement(btnAddCart).click();
return this;
}