我试图单击Web元素并在其中输入文本。
步骤:
单击“游览”选项卡。
在搜索字段上执行发送键操作。
1。我尝试使用搜索框上的单击并通过发送键输入文本,但无法这样做,此后,我执行了点击操作并使用javaScript发送键,但这还是行不通的。
//代码如下
public class HandlingDropDown2 {
static WebElement element;
static WebDriver driver;
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "Driver/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.phptravels.net/");
element = driver.findElement(By.xpath("//span[contains(text(),'Tours ')]"));
element.click();
Thread.sleep(2000);
element = driver.findElement(By.xpath("//button[contains(text(),'Got it!')]"));
element.click();
Thread.sleep(2000);
element = driver.findElement(By.xpath("//div[@id='s2id_autogen5']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
System.out.println("clicked on autogen box");
//element.click();
Thread.sleep(2000);
element = driver.findElement(By.xpath("//div[@class='select2-drop select2-display-none select2-with-searchbox select2-drop-active']"));
JavascriptExecutor executor2 = (JavascriptExecutor)driver;
executor2.executeScript("arguments[0].'value='Test';",element);
//element.sendKeys("test");
}
}
预期结果:用户必须能够通过自动化输入一些文本。
实际结果:无法使用JavaScript和简单的selenium方法执行click和sendkey。
答案 0 :(得分:0)
记住sendKeys的功能
首先,您的xPath
是div元素,而您正在尝试在div元素中做sendKeys
,这是错误的。如果观察到,则有一个名为“按列表或城市名称搜索”的跨度元素。如果单击此处,则您的输入元素将可见,您可以在其中click()
和sendKeys("")
尝试
// click on below span element to get input visibled,
element = driver.findElement(By.xpath("//span[text()='Search by Listing or City Name']"));
element.click();
然后您的输入元素现在可用,您可以在其中单击并发送键
element = driver.findElement(By.xpath("//div[@id='select2-drop']//input[@class='select2-input'][last()]"));
element.click();
element.sendKeys("test");