我在不同的抓取工具上做项目并试图模仿用户操作。作为其中的一部分,我正在抓取此url。这里有一个邮政编码框,我试图点击它,然后从下拉列表中提取文本。我写了下面的代码,但不确定为什么它根本不起作用。有人可以帮忙吗?我做了详尽的搜索以找到根本原因但什么都没有。任何建议都会非常感激。
driver.getUrl(aboveUrl);
WebElement inputBox = driver.findElement(By.id("pincodeInputId"));
inputBox.click();
System.out.println(driver.findElement(By.className("_3mWImx")).getText());
- 这给出了null; 等待帮助!
答案 0 :(得分:0)
原因是您选择的节点是具有文本
的元素的父节点你应该使用
System.out.println(driver.findElement(By.css("_3mWImx span")).getText());
那会有用。另请注意,类_3mWImx
有多个元素,因此这只会为您提供第一个元素。如果您对所有这些感兴趣,那么您应该使用driver.findElements
并循环结果
答案 1 :(得分:0)
如果您要打印所有必须使用的findElements()
,实际上下拉列表中有多个值。使用此代码,它将为您提供所需的结果:
WebDriver driver=new FirefoxDriver( );
driver.manage().window().maximize();
driver.get("https://www.flipkart.com/moto-e4-plus-fine-gold-32-gb/p/itmevqynuz4fwxca");
WebElement inputBox = driver.findElement(By.id("pincodeInputId"));
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
inputBox.click();
List<WebElement> elements=driver.findElements(By.className("_3mWImx"));
for(WebElement ele:elements)
{
System.out.println(ele.getText()); //It will print innertext of each element
}
输出:
From Saved Addresses
Loginto see your saved addresses