使用Selenium webdriver无法访问下拉列表,为什么?

时间:2015-09-08 19:21:08

标签: selenium selenium-webdriver 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");    

2 个答案:

答案 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");

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