使用firefox webdriver尝试加载选项名称从下拉列表但不工作?

时间:2017-09-09 18:05:24

标签: java selenium selenium-webdriver

下面我无法使用名称顺序加载移动设备列表,使用代码从下拉菜单中选择选项,但只能立即加载上一页。当我运行下面的代码时,它选择了Name标签,但结果没有显示在输出屏幕上。

package selflearning;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Guru99Ecommerce1 {

    public static void main(String[] args) throws Exception {

        System.setProperty("webdriver.gecko.driver","C:\\geckodriver\\geckodriver.exe"); 
        WebDriver driver=new FirefoxDriver();
        driver.get("http://live.guru99.com/index.php/");

        String title=driver.getTitle();
        String expectedTitle="Home page";
        System.out.println("The title of the webPage is "+title);
        expectedTitle.equalsIgnoreCase(title);
        System.out.println("Title is verified");
        driver.findElement(By.xpath("//a[text()='Mobile']")).click();

        String nextTitle=driver.getTitle();
        System.out.println("The title of next page"+nextTitle);

        String nextExpectedTitle="pageMobile";
        nextExpectedTitle.equalsIgnoreCase(nextTitle);
        System.out.println("The next title is verified");


        driver.findElement(By.xpath("//div[@class='category-products']//div/div[@class='sorter']/div/select[@title='Sort By']")).click();
        driver.findElement(By.xpath("//div[@class='category-products']//div/div[@class='sorter']/div/select/option[2]")).click();


        Thread.sleep(5000);




    }

}

2 个答案:

答案 0 :(得分:1)

尝试使用此代码,您将错过Select类来选择下拉列表

   driver.get("http://live.guru99.com/index.php/");

        String title=driver.getTitle();
        String expectedTitle="Home page";
        System.out.println("The title of the webPage is "+title);
        expectedTitle.equalsIgnoreCase(title);
        System.out.println("Title is verified");
        driver.findElement(By.xpath("//a[text()='Mobile']")).click();

        String nextTitle=driver.getTitle();
        System.out.println("The title of next page"+nextTitle);

        String nextExpectedTitle="pageMobile";
        nextExpectedTitle.equalsIgnoreCase(nextTitle);
        System.out.println("The next title is verified");

        Select s=new Select(driver.findElement(By.xpath(".//*[@id='top']/body/div[1]/div/div[2]/div/div[2]/div[1]/div[3]/div[1]/div[1]/div/select")));
        s.selectByVisibleText("Name");

答案 1 :(得分:0)

实际上对于HTML Select标签,我们可以直接点击你想要的选项,不需要先点击选择展开选项列表然后点击选项。

所以你可以尝试下面的代码:

public void chooseOrderBy(String orderBy) {

driver
.findElement(by.css("[title='Sort By']"))
.findElement(by.xpath(String.format("./option[contains(text(), '%s')]", orderBy))
.click();

}

根据用户体验,用户需要先查看所有选项才能选择他想要的选项,因此用户必须先单击选择以使其首先弹出所有选项。

但是自动化在选择一个选项之前无需查看所有选项。它可以直接点击选项完成选择。

运行上面的代码,您会注意到在自动运行期间选择选项之前的选择不弹出选项。

当然,单击选择弹出选项,然后选择选项,这也应该有效。但还有一次在页面上操作。

提醒:通过HTML Select标记直接点击“仅选项支持”下拉列表,对于那些Jquery下拉列表,您必须单击弹出选项,然后从中选择一个。