自动建议列表元素在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")]'
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")]'