【问题标题】:How to enter text with in the chat bot form input fields of https://www.phptravels.net/home using Selenium and Java如何使用 Selenium 和 Java 在 https://www.phptravels.net/home 的聊天机器人表单输入字段中输入文本
【发布时间】:2020-07-08 18:38:04
【问题描述】:
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;


public class Bot {

    /**
     * @param args
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub
        
        WebDriver driver;
        String baseURL = "https://www.phptravels.net/";
        System.setProperty("webdriver.chrome.driver","/home/khawar/workspace/MyTest/chromedriver");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
        driver.get(baseURL);
        List<WebElement> element = driver.findElements(By.xpath("//iframe[@id = 'chat-widget']"));
        Thread.sleep(5000);
        if(element.size()>0){
            element.get(0).click();
        }
        driver.switchTo().frame(1);
        // Enter Name
        driver.findElement(By.id("name")).sendKeys("reretr");
        // Enter Phone Number
        driver.findElement(By.id("o68vveqb3d_157907312787606648")).sendkeys("1234567");
        // Enter Email
        driver.findElement(By.id("email")).sendKeys("test@gmail.com");
        // Click on button
        driver.findElement(By.xpath("//*[@id='pvtkmhumbra']/div/form/div[7]/button/div/span")).click();

    }

}

当我点击聊天机器人图标时,它会打开。但是我尝试使用 sendkey 输入值,然后它们没有输入到输入字段中。有什么建议吗?我不知道这有什么问题。请让我知道如何为这些字段提供输入?

【问题讨论】:

    标签: java selenium xpath chatbot webdriverwait


    【解决方案1】:

    而不是

    driver.switchTo().frame(1);

    使用

    driver.switchTo().frame("chat-widget")

    然后再试一次。

    【讨论】:

      【解决方案2】:

      要在 URL https://www.phptravels.net/home 的所需字段中发送 字符序列,因为所需的元素在 &lt;iframe&gt; 内,因此您必须:

      • 为所需的 frameToBeAvailableAndSwitchToIt 引入 WebDriverWait

      • 为所需的 elementToBeClickable 引入 WebDriverWait

      • 您可以使用以下Locator Strategies

        System.setProperty("webdriver.chrome.driver","C:\\WebDrivers\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized");
        options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
        options.setExperimentalOption("useAutomationExtension", false);
        WebDriver driver =  new ChromeDriver(options);
        driver.get("https://www.phptravels.net/home");
        new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@id='chat-widget']")));
        new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@aria-label='Open LiveChat chat widget']"))).click();
        new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='name']"))).sendKeys("reretr");
        driver.findElement(By.xpath("//label/span[text()='WhatsApp Number:']//following::input[1]")).sendKeys("1234567");
        driver.findElement(By.xpath("//input[@id='email']")).sendKeys("test@gmail.com");
        driver.findElement(By.xpath("//span[text()='Start the chat']")).click();
        
      • 浏览器快照:


      参考

      您可以在以下位置找到一些相关讨论:

      【讨论】:

        猜你喜欢
        • 2021-09-15
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多