下面我无法使用名称顺序加载移动设备列表,使用代码从下拉菜单中选择选项,但只能立即加载上一页。当我运行下面的代码时,它选择了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);
}
}
答案 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下拉列表,您必须单击弹出选项,然后从中选择一个。