Как ввести текст в поля ввода формы чат-бота https://www.phptravels.net/home с использованием Selenium и Java - PullRequest
0 голосов
/ 08 июля 2020
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, тогда они не вводятся в поля ввода. Любое предложение, пожалуйста? Я не знаю, что с этим не так. Пожалуйста, дайте мне знать, как я могу ввести данные в эти поля?

Ответы [ 2 ]

0 голосов
/ 08 июля 2020

Чтобы отправить последовательность символов в желаемых полях URL-адреса https://www.phptravels.net/home, так как нужные элементы находятся в <iframe>, вам необходимо:

  • Induce WebDriverWait для желаемого frameToBeAvailableAndSwitchToIt .

  • Induce WebDriverWait для желаемый elementToBeClickable .

  • Вы можете использовать следующие стратегии локатора :

    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();
    
  • Снимок браузера:

Способы работы с # документом в iframe

Можно ли переключиться на элемент в фрейм без использования driver.switchTo (). frame («frameName») в Selenium Webdriver Java?
0 голосов
/ 08 июля 2020

Вместо

driver.switchTo().frame(1);

используйте

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

и попробуйте снова.

...