无法单击网页上的Webelement

时间:2019-04-04 08:29:56

标签: java selenium-webdriver

我试图单击Web元素并在其中输入文本。

步骤:

  1. 启动“ https://www.phptravels.net/

  2. 单击“游览”选项卡。

  3. 在搜索字段上执行发送键操作。

1。我尝试使用搜索框上的单击并通过发送键输入文本,但无法这样做,此后,我执行了点击操作并使用javaScript发送键,但这还是行不通的。

  1. 我为相同但没有肯定结果编写了不同的xpath。

//代码如下

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。

1 个答案:

答案 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");