-1

以下是我想通过 Selenium 在 paytm 上自动化的步骤。

脚步:-

1.启动支付宝。

2.在paytm页面顶部显示的搜索框中输入任何关键字。例如“移动”

3.按回车键导航到搜索结果页面。

问题:在搜索框中写入的关键字被自动删除

我的代码:

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);
    }
}
4

2 回答 2

1

问题是您需要等待页面完全加载。有一个在页面加载时运行的 ajax 脚本,它在搜索输入文本框上做了一些工作。当页面完全加载时,body 标签包含一个 style 属性。通过使用 a和a来等待此属性。ExpectedConditionsattributeCOntainsWebDriverWait

试试这个代码 -

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");
于 2018-05-01T11:52:09.003 回答
0

@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
    
  • 当JavaScriptAjax 调用仍处于活动状态时,具有此页面标题的初始页面是一个间歇页面。因此,在发送搜索字符串之前,您需要诱导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 !
    
  • 浏览器快照

支付宝

于 2018-05-02T14:21:04.317 回答