我试图从下拉菜单中选择一个值,直到" www.parcelhero.com"但没有这样做。当我执行脚本时,页面会加载,当访问下拉列表时,控件会在页面中向下移动,而下一个下拉列表会显示一个黑暗的动画视频。为什么脚本无法访问下拉列表?是因为那里有动画吗?
WebDriver driver= new FirefoxDriver();
driver.get("https://www.parcelhero.com");
WebElement element=driver.findElement(By.name("Consignor.Address.CountryId"));
Select se=new Select(element);
se.selectByVisibleText("INDIA");
答案 0 :(得分:2)
这只是等待问题。我刚刚验证过,每次运行时都会运行以下代码。在这种情况下实现显式等待总是好主意。
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
/**
* @author Saifur
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "E:\\working\\selenium\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.parcelhero.com/");
WebElement element = new WebDriverWait(driver, 10)
.until(ExpectedConditions.visibilityOfElementLocated(By.name("Consignor.Address.CountryId")));
Select se = new Select(element);
se.selectByVisibleText("INDIA");
}
}
答案 1 :(得分:0)
我的代码可以正常使用一些技巧。在浏览器注入时做一件事,不要最大化它,但是将它最小化到屏幕的一半(手动进行调试)。
运行此代码
WebElement element1=driver.findElement(By.name("Consignor.Address.CountryId"));
Select newselect = new Select(element1);
ArrayList<String> valuesInList = new ArrayList<String>();
for(WebElement element:newselect.getOptions())
{
valuesInList.add(element.getText());
}
newselect.selectByVisibleText("INDIA");
让我知道它是否也适合你。