我无法在这个网站上找到所有的文字——https://niftygateway.com/marketplace
使用这个简单的代码-
String iterativeXpath = "(//*[@id='root']/div/div[2]/div[2]/div/div[2]/div[2]/div[1]/div/div)";
iterativeXpath = iterativeXpath.substring(0, iterativeXpath.length()-1);
WebDriverWait wait = new WebDriverWait(driver, 15);
for(int i = 1; i <=20; i++){
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(iterativeXpath+"["+i+"])")));
System.out.println(driver.findElement(By.xpath(iterativeXpath+"["+i+"])")).getText());
}
问题出在XPath上。这是产品名称文本的XPath。这将为您提供具有产品名称的所有元素。那么只有您可以使用getText()方法。
//div[@class='MuiPaper-root MuiCard-root sc-Axmtr hvJMgY jss413 MuiPaper-elevation0 MuiPaper-rounded']/div/p[1]
使用这种技术来获得你想要的所有文本。
要等待列表,可以使用AllelementsLocatedby
的可见性。
以及div.MuiCardContent-root。jss414
选择器看起来更好:
driver.get("https://niftygateway.com/marketplace");
WebDriverWait wait = new WebDriverWait(driver, 20);
List<WebElement> elements = wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("div.MuiCardContent-root.jss414")));
for(WebElement element: elements) {
System.out.println(element.getText());
}
获取此网站上的所有文本https://niftygateway.com/marketplace您可以使用以下定位器策略:
>
使用cssSelector:
driver.get("https://niftygateway.com/marketplace");
System.out.println(driver.findElements(By.cssSelector("div.MuiCardContent-root")).stream().map(element->element.getText()).collect(Collectors.toList()));
理想情况下,您需要诱导WebDriverWait以实现AllelementsLocatedBy()的可见性,并且您可以使用以下定位器策略:
>
使用xpath:
driver.get("https://niftygateway.com/marketplace");
System.out.println(new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//div[contains(@class, 'MuiCardContent-root')]"))).stream().map(element->element.getText()).collect(Collectors.toList()));
控制台输出:
[ATLAS #2/21
Symbiocene Mythologica
$1,333.00, The Flipper #86/99
The Title by Pak
Make Offer, A Trebled Man #7/20
Select Works by Alotta Money
$1,850.00, UNISWAP #164/261
Banned From The Internet Open Edition by Slime Sunday
$725.00, Peng - Shiny #5/5
Crystal Pops - Winter Edition by Goldweard
$1,500.00, Gucci Ghost Aqua Pink #17/20
Nifty Ghost Collection by Trevor Andrew
$2,500.00, Entangled #7/15
Tranquility by Andreas Wannerstedt
$333.33, The Day I Decided to Fly #72/268
Growing Up...I'm Scared Open Edition by FEWOCiOUS
$413.00, Extrusion #447/457
The Collision by Pak x Trevor Jones
Make Offer, A Trebled Man #13/20
Select Works by Alotta Money
$1,888.88, The Square #5/6
The Japanese Garden by Six n Five
$2,500.00, The Last Stand of the Nation State
Open Edition by Slimesunday
$1,325.00, Kikai Ningyou #16/20
Twisted Vacancy Edition
Not Accepting Offers, Extrusion #63/457
The Collision by Pak x Trevor Jones
Not Accepting Offers, The Sprite
Metamorphosis Open Edition By Metageist
$178.88, Inu - Shiny #15/15
Crystal Pops Asia Edition
$358.88, Pandy - Shiny #14/40
Crystal Pops Asia Edition
$228.88, Peng #24/30
Crystal Pops - Winter Edition by Goldweard
$288.88, Tiggz - Shiny #39/75
Crystal Pops Asia Edition
$125.88, A Trebled Man #20/20
Select Works by Alotta Money
$2,500.00]
我正在使用下面的一段代码来获取某个特定定位器的文本。 这将返回字符串值,但只有在IE浏览器中,它才在其他浏览器(即Firefox和chrome)中失败并工作。 我面临这个问题: 组织。openqa。硒。WebDriverException:无法获取元素文本(警告:服务器未提供任何堆栈跟踪信息) 请帮我解决这个问题,IE浏览器中的这个异常也非常不一致,有时它通过了,有时失败了相同的代码。
问题内容: 我想使用Selenium从DOM中提取一些信息。我正在使用C#WebDriver。 查看IWebElement接口,您可以轻松提取给定的属性。但是,我想提取一个元素的所有属性而无需事先知道它们的名称。 必须有一些简单的方法来执行此操作,因为如果您知道属性名称,则可以使用一种方法来获取属性值。 一个例子: 希望我缺少明显的东西。 提前致谢! 问题答案: JavaScript中的属性将返回
我想用Selenium从DOM中提取一些信息。我正在使用C#WebDriver。 查看IWebElement接口,您可以轻松提取给定的属性。然而,我想提取一个元素的所有属性,而不需要事先知道它们的名称。 必须有一些简单的方法来实现这一点,因为有一种方法可以获取属性值,如果您知道它的名称。 例如: 希望我错过了一些明显的东西。 提前感谢!
我正在尝试使用webdriver从上面的html代码中获取动态跨度文本,但得到的是: org.openqa.selenium.nosuchelementException:找不到元素:{“method”:“id”,“selector”:“MathQ2”} 我需要从span id“MathQ2”获取文本:“6+4=” 此文本“6+4=”在每次刷新页面或加载新页面时都在更改 我尝试过xpath、id、
我的代码如下所示: 我也尝试过在选择器上执行点击操作,或者刷新页面,但这些操作都不起作用。我猜这个网页上有一些Javascript? 提前道谢! --Java version 7 Selenium version 2
问题内容: 有一个具有子元素的元素,那些子元素又具有子元素,依此类推。我想获取所有作为该元素后代的元素。谢谢。 问题答案: 试试这个: (Java) (C#)