Java 单击selenium中自动建议下拉列表中的值
我正在使用java开发selenium中的测试自动化。我的疑问是我正在使用发送键发送自动建议下拉列表的值Java 单击selenium中自动建议下拉列表中的值,java,selenium,Java,Selenium,我正在使用java开发selenium中的测试自动化。我的疑问是我正在使用发送键发送自动建议下拉列表的值 locater.sendKeys(“某些值”) 因此,当我使用 定位器。发送键(键。箭头向下) locater.sendKeys(Keys.Enter) 它总是选择最后一个选项。 如何单击我正在发送的选项?您的代码不应选择最后一个选项。应选择第一个选项 如果您想特别选择您提供的选项,则可以使用以下代码: locator.sendKeys("test match"); Thre
locater.sendKeys(“某些值”)
因此,当我使用
定位器。发送键(键。箭头向下)
locater.sendKeys(Keys.Enter)
它总是选择最后一个选项。
如何单击我正在发送的选项?您的代码不应选择最后一个选项。应选择第一个选项 如果您想特别选择您提供的选项,则可以使用以下代码:
locator.sendKeys("test match");
Thread.sleep(1000);
WebElement element_move = driver.findElement(By.xpath("//*[. = 'test match']"));
Actions actions = new Actions(driver);
actions.moveToElement(element_move).click().build().perform();
由于选择是,下面的功能将为您工作
在您的情况下,id是32
所以你可以这样称呼它
reactSelect("32", "Male"); // reactSelect("32", "male");
作用
public void reactSelect(String id, String... values) {
By selectDropArrow = By.xpath("//div[@class='Select-control'][span[contains(@id,'react-select-" + id + "')]]/span[@class='Select-arrow-zone']");
WebElement dropDownArrow = driver.findElement(selectDropArrow);
dropDownArrow.click();
if (values != null) {
for (String value : values) {
WebElement option = driver.findElement(By.xpath("//div[@id='react-select-" + id + "--list']/div[@class='Select-option' and text()='" + value + "']"));
option.click();
}
}
}
完整示例
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
*
* @author Madhanraj
*/
public class SelTest {
WebDriver driver;
public SelTest() {
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
public void start() {
driver.get("http://jedwatson.github.io/react-select/");
reactSelect("3", "Caramel", "Peppermint");
}
public void reactSelect(String id, String... values) {
By selectDropArrow = By.xpath("//div[@class='Select-control'][span[contains(@id,'react-select-" + id + "')]]/span[@class='Select-arrow-zone']");
WebElement dropDownArrow = driver.findElement(selectDropArrow);
dropDownArrow.click();
if (values != null) {
for (String value : values) {
WebElement option = driver.findElement(By.xpath("//div[@id='react-select-" + id + "--list']/div[@class='Select-option' and text()='" + value + "']"));
option.click();
}
}
}
public void quit() {
driver.quit();
}
public static void main(String[] args) {
SelTest ss = new SelTest();
ss.start();
ss.quit();
}
}
您可以尝试只按enter键而不按向下箭头。如果html标记为,则可以使用
new Select(元素)。selectByValue(“value”)代码>不,它不是一个选择标签,而是一个自动建议下拉菜单,就像谷歌搜索一样。我尝试了上面的代码,但没有得到想要的结果,它没有点击任何元素。确切地说,我想选择性别为“男性”,所以当我发送locator.sendKeys(“男性”)时;两个建议依次显示为男性和女性,因此当我使用locater.sendKeys(key.ARROW_DOWN)时;总是选择女性。如果省略locater.sendKeys(key.ARROW_DOWN);并且只使用locater.sendKeys(key.Enter),选择男性才有效。但是如果我的字符串位于第二位左右,这也会失败。你能给我元素的HTML吗。它将帮助我修复您的代码选择性别我可以看到“反应选择”用于创建下拉列表。在使用react-select创建的下拉列表中给出元素的路径并不是那么简单。react-select生成一个隐藏的文本字段,精确地包含所选的值,这就是问题所在。当我选择性别时,只有这些元素显示,否则不会显示。如何解决这类问题?有什么想法吗?