Selenium 如何选择具有相同类、类型、Xpath的输入字段所有内容都相同

Selenium 如何选择具有相同类、类型、Xpath的输入字段所有内容都相同,selenium,testing,selenium-webdriver,automation,automated-tests,Selenium,Testing,Selenium Webdriver,Automation,Automated Tests,我有两个输入字段来输入具有相同类、类型的选项。Id是不同的,因为它是动态的,在运行时创建,所以我不能使用Id。我使用了索引,它不能正常工作 driver.findElement(By.xpath("//input[@type='text'][@placeholder='Provide a response entry that customers can select'][1]")).click(); driver.findElement(By.xpath("//input[@type='tex

我有两个输入字段来输入具有相同类、类型的选项。Id是不同的,因为它是动态的,在运行时创建,所以我不能使用Id。我使用了索引,它不能正常工作

driver.findElement(By.xpath("//input[@type='text'][@placeholder='Provide a response entry that customers can select'][1]")).click();
driver.findElement(By.xpath("//input[@type='text'][@placeholder='Provide a response entry that customers can select'][1]")).sendKeys("Iphone 6");
driver.findElement(By.xpath("//input[@type='text'][@placeholder='Provide a response entry that customers can select'][2]")).click();
driver.findElement(By.xpath("//input[@type='text'][@placeholder='Provide a response entry that customers can select'][2]")).sendKeys("Iphone 7");
我在给定的图像链接中使用了索引

索引1在这种情况下有效,但找不到索引2

给定的html代码位于输入字段1和字段2的下方

字段1

字段2

如果这两个
输入始终在此序列中(因此第一个
输入始终为第一个,第二个始终为第二个)

您可以使用:

driver.findElement(By.xpath("(//input[@type='text'][@placeholder='Provide a response entry that customers can select'])[1]")).click();


driver.findElement(By.xpath("(//input[@type='text'][@placeholder='Provide a response entry that customers can select'])[2]")).click();

同时,我修正了索引中的语法

基于@Anand的答案,您可以简化一点:

WebElement button1 = driver.findElement(By.xpath("(//input[@type='text' and @placeholder='Provide a response entry that customers can select'])[1]"));
WebElement button2 = driver.findElement(By.xpath("(//input[@type='text' and @placeholder='Provide a response entry that customers can select'])[2]"));
我认为使用
而不是堆叠括号更容易阅读

我将其类似地用于小部件:

WebElement header = driver.findElement(By.xpath("//div[contains(@class,'panel')]/div[contains(@class,'panel-heading') and text()[contains(.,'News Feed')]]"));

请读一读为什么会这样。考虑使用格式化的基于文本的相关HTML、代码试验和错误堆栈跟踪更新问题。尝试它的ID。这是不同的。一个是“input_168”,另一个是“input_170”。是的,我知道,但id是动态的,在运行时会发生变化。例如,我第一次运行测试时,id值可能是“input_168”和“input_170”。当我第二次运行测试时,它可能是“input_262”和“input_264”@DebanjanB好的,我提到了代码。首先,我认为它看起来不太可读。@MuneebAkhtar我已经缩进了您的代码试用版,但要获得有效的答案,您仍然需要提供文本格式的相关HTML