请注意,我是PowerShell和HTML的初学者。
我正在尝试使用PowerShell从网页中提取一些表数据。我这样做的方式是通过使用PowerShell和Selenium webdriver来自动打开chrome上的特定网页,登录并导航到带有表格的页面。
该网页依赖于托管以太网交换机的IP地址,因此不幸的是,您无法自行登录该网站进行尝试。我已经上传了一段HTML脚本和网页截图。希望这能帮上忙。
我面临的问题是,每当我尝试提取表数据时,都会返回以下问题或类似问题:
"Exception calling "FindElementByXPath" with "1" argument(s): "no such element: Unable to locate element:
{"method":"xpath","selector":"//*[@id="blueLinkBold11"]"}
(Session info: chrome=112.0.5615.138)"
At line:11 char:1
+ $chrome.FindElementByXPath('//*[@id="blueLinkBold11"]').Text
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NoSuchElementException"
以下是我目前的PowerShell脚本:
$Scriptpath="C:\ATE Solutions\Applications\EA-0113\HABC_Script"
Add-Type -Path "$Scriptpath\WebDriver.dll"
$chrome=New-Object "OpenQA.Selenium.Chrome.ChromeDriver"
$chrome.Navigate().GoToUrl("http://192.168.1.101/login.cgi")
$chrome.FindElementByXPath('//*[@id="password"]').SendKeys('Password1')
$chrome.FindElementByXPath('//*[@id="loginBtn"]').Click()
$chrome.FindElementByXPath('//*[@id="blueLinkBold11"]/div[2]/a/span').Click()
Start-Sleep -Seconds 5
$chrome.FindElementByXPath('//*[@id="tbl2"]/tbody/tr[7]/td[6]').Text
下图显示了我试图提取的表数据及其HTML脚本:
如果您需要更多的信息或更多的图像,请让我知道。
以下是我到目前为止尝试过的列表:
1.对特定表元素使用“findelementsbyxpath”函数。
1.使用“Invoke-WebRequest”函数和以下脚本,
$pagcontent = Invoke-WebRequest -Method GET -Uri“http://192.168.1.101/index.cgi“$TABLE = $pagcontent.ParsedHtml.getElementsByTagName('table ')
这些都返回了一个类似的问题,它无法定位元素。
1条答案
按热度按时间kh212irz1#
感谢您发送编修。“Nick.McDermaid”和“Jdweng”的评论帮助我解决了我的问题。我发现我在错误的网页上搜索。
虽然chrome上的URL是'http://192.168.1.101/index.cgi',但如果我将鼠标悬停在网页上的'端口状态'按钮上,它会在页面的左下角显示一个不同的URL,'http://192.168.1.101/status.cgi'。如果我使用这个URL并对代码进行一些调整,它就可以工作,并允许我提取所需的数据。
这是我目前的工作脚本,
我使用Labview和Teststand来自动运行这个脚本,并使用powershell.exe组织下面提取的表数据。