为什么不能使用Selenium webdriver访问下拉列表?



我试图从下拉菜单中选择"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");

让我知道它是否也适合你。

最新更新