自动建议列表元素在Console的结果集中显示两次,根据文本点击列表元素的代码是什么

Auto suggestion list Element's are displayed twice in the result set in Console,what ll be the code to click on list element on the basis of text

以下是获取列表元素名称并单击所需列表元素的代码:下面是结果附件:控制台显示列表项两次:其他选择方式可能是什么复杂的自动建议列表 Web 应用程序的元素。

package Pages;
import org.testng.annotations.Test;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Login {

WebDriver driver;
String baseUrl="http://www.flipkart.com/";

@BeforeTest
public void flipkartSetup()
{
    driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

}

@Test(priority=0)
public void flipkartLoginpage()
{
    //open the webpage :s
    driver.get(baseUrl);
    //click on Login
     driver.findElement(By.xpath(".//div[@id='container']//header/div[2]/div/div[1]/u l/li[8]/a")).click();
    //wait for 30 second
    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
    //Enter mobile into the  text box 
    driver.findElement(By.xpath("//div[@class='login-input-wrap']/input[@type='text']")).sendKeys("9999999999");
    //Enter password into the text box 
    driver.findElement(By.xpath("//div[@class='tmargin10 login-input-wrap']/input[@type='password']")).sendKeys("abcdefgh");
    //wait for 30seconds
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
    //click on Login button
    driver.findElement(By.xpath("//div[@class='tmargin20 login-btn-wrap']/input[@type='button']")).click();
    //wait for 30seconds
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);



}


@Test(priority=1)

public void FlipkartSearch()
{
    driver.findElement(By.xpath("//div[@id='container']//form//input[@type='text']")).sendKeys("Mobile");
    FlipkartSerchfnctn("mobile");
}


@Parameters("mobile")
@Test(priority=2)

public void FlipkartSerchfnctn(@Optional("mobile") String textToSelect)
{

    List <WebElement> listItems = driver.findElements(By.xpath(".//form[@class='_1WMLwI']//ul/li"));
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

    for (int i = 0; i < listItems.size(); i++) {

        System.out.println(listItems.get(i).getText());

        if(listItems.get(i).getText().equals("mobile")){

            System.out.println("Trying to select 2: "+textToSelect);

            listItems.get(i).click();
            break;
        }

}

//@AfterTest
//public void tearDown() throws Exception {
//  driver.quit();
//}


}

}

您正在从测试 FlipkartSearch() 调用 FlipkartSerchfnctn(),然后执行它作为具有相同参数 ("mobile") 的独立测试获得收益。这就是为什么你会得到两次结果。

要么不要从测试 FlipkartSearch() 中调用它,要么从 FlipkartSerchfnctn() 中删除 @Test 注释。

您可以使用以下 XPATH 查询根据其中的文本获取元素。

'//*[contains(text(), "some text present in element")]'

'//YOUR XPATH TO THAT ELEMENT[contains(text(), "some text present in element")]'