我试图从下拉菜单中选择"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");
这只是等待问题。我刚刚验证,下面的代码工作,每次我运行它。在这种情况下实现显式等待总是一个好主意。
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");
}
}
我的代码工作得很好,有一些技巧。当浏览器注入时,做一件事,不要最大化它,而是最小化到屏幕的一半(手动调试)。
运行这段代码
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");
让我知道它是否也适合你。