通过 selenium 在 paytm 主页上发起搜索
Issue initiating search on paytm home page through selenium
以下是我想通过 Selenium 在 paytm 上自动化的步骤。
步骤:-
1.Launch 支付宝
2.Enter paytm 顶部显示的搜索框中的任意关键字 page.Eg。"Mobile"
3.Press 输入导航到搜索结果页面。
问题:
写在搜索框中的关键字被自动删除
我的代码:
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);
}
}
问题是您需要等待页面完全加载。有一个 ajax 脚本是页面的 运行 加载,它在搜索输入文本框上做一些工作。当页面完全加载时,body 标签包含一个 style 属性。 Wait 通过使用 attributeCOntains
的 ExpectedConditions
和 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");
@Grasshopper 的分析是正确的您需要等待页面完全加载。我用你自己的代码做了一个小测试,在调用 url:
后不久检索 Page Title
代码块 :
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
具有此页面标题的初始页面是一个间歇页面,当有 JavaScript 和 Ajax 呼叫 仍然有效。因此,在发送搜索 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 !
浏览器快照 :
以下是我想通过 Selenium 在 paytm 上自动化的步骤。
步骤:-
1.Launch 支付宝
2.Enter paytm 顶部显示的搜索框中的任意关键字 page.Eg。"Mobile"
3.Press 输入导航到搜索结果页面。
问题: 写在搜索框中的关键字被自动删除
我的代码:
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);
}
}
问题是您需要等待页面完全加载。有一个 ajax 脚本是页面的 运行 加载,它在搜索输入文本框上做一些工作。当页面完全加载时,body 标签包含一个 style 属性。 Wait 通过使用 attributeCOntains
的 ExpectedConditions
和 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");
@Grasshopper 的分析是正确的您需要等待页面完全加载。我用你自己的代码做了一个小测试,在调用 url:
后不久检索 Page Title代码块 :
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
具有此页面标题的初始页面是一个间歇页面,当有 JavaScript 和 Ajax 呼叫 仍然有效。因此,在发送搜索 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 !
浏览器快照 :