【发布时间】:2022-01-10 05:46:24
【问题描述】:
我绝不是开发人员。我是通过谷歌得到的,但这个问题的深度我不明白。
如果您能解释我在编程知识方面缺乏什么,将不胜感激。
使用 powershell,我可以从我选择的任何 div 中获取所有 .Text。 但是我不知道如何从 .Text 为“abc”的 div 中找到文本
$allGames.Text 包含所有游戏标题,到目前为止一切顺利:
[System.Reflection.Assembly]::LoadFrom("{0}\WebDriver.dll" -f $PathToFolder)
if ($env:Path -notcontains ";$PathToFolder" ) {
$env:Path += ";$PathToFolder"
}
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.AddArgument('start-maximized')
$ChromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($ChromeOptions)
$ChromeDriver.Url = $uri
#sometimes site is slow, 5s should be enough
Start-Sleep -Seconds 5
$allGames = $ChromeDriver.FindElementsByCssSelector("div.result-title.gameName")
里面是我要检索的文本。 的名字也不是唯一的。有数百个具有相同名称的 div 和 span。所以我不能直接访问它们。
我只想要 span 中的文本,如果它的 div 有文本“abc”
我对 powershell 的基本知识告诉我这样做
foreach ($game in $allGames) {
$game.GetType() #=RemoteWebElement
if ($game.Text -eq "abc") {
Write-Host "Found something!"
$span = $game.FindElementsByCssSelector("span.search-listing-count-text")
$span.Text
}
}
但是 $span 什么都不包含
我不明白是我没能理解 Selenium(我什至不知道它是什么。Google 告诉我我可以用它在网站上查找东西),或者我没能理解powershell 的面向对象方面(我不这样做:))
我错过了什么?
html sn-p:
<div class="search-results">
<div class="result-title gameName">abc
</div>
<div class="result-info">
<span class="search-listing-count-text">123
</span>
</div>
</div>
【问题讨论】:
标签: powershell selenium selenium-webdriver xpath selenium-chromedriver