Проблема с поиском на главной странице PayTM через селен - PullRequest
0 голосов
/ 01 мая 2018

Ниже приведены шаги, которые я хочу автоматизировать на платформе Selenium.

Шаги: -

1.Запуск Paytm.

2.Введите любое ключевое слово в поле поиска, отображаемое в верхней части страницы оплаты. Например, "Мобильный телефон"

3. Нажмите Enter, чтобы перейти на страницу результатов поиска.

Issue: Ключевое слово, написанное в поле поиска, автоматически удаляется

Мой код:

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

public class XPath {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "C:\\ProgramFiles\\Work\\ChromeDriver\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.get("https://paytm.com");
        //driver.findElement(By.xpath("//input[@placeholder='Search for a Product , Brand or Category']")).sendKeys("mobile");
        driver.findElement(By.xpath("//input[@placeholder='Search for a Product , Brand or Category']")).sendKeys(Keys.ENTER);
    }
}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

@ Анализ Grasshopper был в правильном направлении: вам нужно дождаться полной загрузки страницы . Я провел небольшой тест с вашим собственным кодом для получения заголовка страницы вскоре после вызова url :

  • Кодовый блок :

    System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://paytm.com");
    System.out.println(driver.getTitle());
    
  • Консольный вывод :

    Recharge - Online Mobile Recharge & Win 100% Cashback | Paytm.com
    
  • Начальная страница с этим Заголовком страницы является прерывистой, когда JavaScripts и Ajax Calls все еще активны. Поэтому перед отправкой поиска String вам нужно вызвать WebDriverWait следующим образом:

  • Идеальный подход :

    System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://paytm.com");
    System.out.println(driver.getTitle());
    new WebDriverWait(driver, 20).until(ExpectedConditions.titleContains("Paytm.com – Digital & Utility Payment, Entertainment, Travel, Payment Gateway & more Online !"));
    System.out.println(driver.getTitle());
    driver.findElement(By.xpath("//input[@placeholder='Search for a Product , Brand or Category']")).sendKeys("mobile");
    driver.findElement(By.xpath("//input[@placeholder='Search for a Product , Brand or Category']")).sendKeys(Keys.ENTER);
    
  • Консольный вывод :

    Recharge - Online Mobile Recharge & Win 100% Cashback | Paytm.com
    Paytm.com – Digital & Utility Payment, Entertainment, Travel, Payment Gateway & more Online !
    
  • Снимок браузера :

paytm

0 голосов
/ 01 мая 2018

Проблема в том, что вам нужно дождаться полной загрузки страницы . Существует ajax-скрипт, который запускается при загрузке страницы и выполняет некоторую работу с текстовым полем для поиска. Когда страница полностью загружена, тег body содержит атрибут style. Подождите для этого атрибута, используя ExpectedConditions из attributeCOntains с WebDriverWait.

Попробуйте этот код -

new WebDriverWait(driver, 3).until(ExpectedConditions.attributeContains(By.tagName("body"), "style", "overflow: visible;"));
WebElement srch = driver.findElement(By.cssSelector("input[type='search']"));
srch.sendKeys("Hello");
...