xpath 相关问题

XPath的主要目的是解决XML文档的各个部分。它还提供操纵弦乐,数字和布尔值的基本设施。 XPath使用紧凑的非XML语法。 XPath在XML文档的抽象逻辑结构上运行,而不是表面语法。

无法获取 XPath,因为值和位置正在更改

我正在测试一个应用程序。我想使用机器人框架测试这些数字并验证预期值。由于导入一个文件后值和位置会发生变化,因此很难获取

回答 1 投票 0

Xpath 使用无输出

我有一个我正在尝试解析的 xml 的 API 输出 下面是一个例子。 我正在使用 Power Automate 并尝试使用 xpath 我有一个 xml 的 API 输出,我正在尝试解析 下面是一个例子。 我正在使用 Power Automate 并尝试使用 xpath <?xml version="1.0"?> <requests> <request id="31998"> <employee id="6505">Peter Parker</employee> <start>2025-07-11</start> <end>2025-07-13</end> <created>2025-07-16</created> <status lastChanged="2024-01-16" lastChangedByUserId="91210">approved</status> <type id="84" icon="time-off-calendar">Vacation</type> <amount unit="days">2</amount> <dates> <date ymd="2024-03-11" amount="1"/> <date ymd="2024-03-12" amount="1"/> </dates> <notes> <note from="employee">Work Sucks and i dont wont to be here</note> </notes> </request> 我的 Xpath 看起来像这样 xpath(xml(outputs('Compose')), '(//request/@id)') 我的输出是这样的 [ "id=\"31998\"", "id=\"32214\"", "id=\"32339\"" ] 我只想要这里的数字,所以我尝试了以下 xpath(xml(outputs('Compose')), 'string(//request/@id)') 这只返回 31998 这对我来说没有好处,我想要所有的结果。就像第一个例子一样。 所以我尝试了这个语法 xpath(xml(outputs('Compose')), 'string(//request/@id/text()') 和 xpath(xml(outputs('Compose')), 'string(//request/@id[text()]') 这两者都会产生 null 我现在很茫然,失去了所有的耐心 可爱的小伙伴们能帮忙吗 很好,我也无法让它发挥作用。最坏的情况是,您可能需要进行一些字符串操作。 或者,您可以使用 高级数据操作 连接器和 XmlToJson 操作... 结果 ...另一种选择是将 XML 转换为 JSON 并使用 Select 操作对其进行处理... 表达式 来自 = json(xml(variables('XML')))['requests']['request'] 地图项目 = item()[string('@id')] 结果 使用 Powershell 和 Xml Linq 将数据解析到表中,然后导出到 CSV using assembly System.Xml.Linq $inputFilename = 'c:\temp\test.xml' $outputFilename = 'c:\temp\test.csv' $doc = [System.Xml.Linq.XDocument]::Load($inputFilename) $table = [System.Collections.ArrayList]::new() foreach($request in $doc.Descendants('request')) { $requestId = $request.Attribute('id').Value $employee = $request.Element('employee') $employeeId = $employee.Attribute('id').Value $employeeName = $employee.Value $newRow = [psCustomObject]@{ RequestId = $requestId EmployeeId = $employeeId EmployeeName = $employeeName } $table.Add($newRow) | out-null } $table | Export-CSV -path $outputFilename -NoTypeInformation 请求将如下所示 "RequestId","EmployeeId","EmployeeName" "31998","6505","Peter Parker"

回答 2 投票 0

如何使用 IMPORTXML 在 Google Sheet 中获取 YouTube 的频道订阅者数量

我想在不使用 YouTube API 的情况下将 YouTube 频道的订阅者数量放入 Google 表格中。 我做了一些研究并找到了一些例子,但我仍然陷入困境。 输入的是一个网址l...

回答 1 投票 0

如何将 xpath 存储在变量中并在另一个 xpath 中使用该变量

将xpath存储在变量中,并在其他xpath语句中调用该变量 示例.xml //ZC_area/块/Next_block/变体 将xpath存储在变量中,并在其他xpath语句中调用该变量 示例.xml <Variable Name="LC_F_DPN"> <Path>//ZC_area/Block/Next_block/Variant</Path> <Variable_type>DPN</Variable_type> <Class_name>Point</Class_name> </Variable> myxslcode.xsl <xsl:variable name="MyPath" select="//Variable/Path"/> <xsl:value-of select="$MyPath[Index_on_line_section =current()/@VARIANT_RANK and Line_section_id =current()/$LC_ID]/../../Id"/> </xsl:if>``` here, MyPath I couldnt able to access. I want to use the MyPath variable and fetch the values, Can someone please help me with this 我喜欢将 Powershell 脚本与 Xml Linq 一起使用 using assembly System.Xml.Linq $filename = 'c:\temp\test.xml' $doc = [System.Xml.Linq.XDocument]::Load($filename) $variables = $doc.Descendants('Variable') $lc_f_dpn = @([System.Linq.Enumerable]::Where($variables, [Func[object,boolean]]{ param($x) $x[0].Attribute('Name').Value -eq 'LC_F_DPN'})) $path = $lc_f_dpn[0].Element('Path').value $path

回答 1 投票 0

找不到 XPATH 元素

我正在处理这个 HTML: 我正在处理这个 HTML: <div class="IaVba F1" data-test-target="review-rating"> <svg class="UctUV d H0" viewBox="0 0 128 24" width="88" height="16" aria-label="4,0 de 5 burbujas"> 我想从 SVG 元素获取属性“aria-label”。在 XPATH 中查找带有“评论评级”的 DIV 效果很好: element = review.find_element(By.XPATH, './/div[contains(@data-test-target,"review-rating")]') 但是如果我转到以下 SVG 元素,它就不起作用,我收到错误: 消息:没有这样的元素:无法定位元素:{“method”:“xpath”,“selector”:“.//div[contains(@data-test-target,“review- rating”)] / svg” } element = review.find_element(By.XPATH, './/div[contains(@data-test-target,"review-rating")]/svg') 如果我可以定位到 svg,那么我可以检索“aria-label”属性。 知道我做错了什么吗? svg 元素与 html 位于不同的命名空间中。 因此你不能像使用 html 元素一样使用 xpath。 请参阅本教程了解更多说明 所以在你的情况下你需要这个xpath: .//div[contains(@data-test-target,"review-rating")]/*[local-name()="svg"]

回答 1 投票 0

如何获取xpath

还没有账户?报名 我需要单击带有 xpath 的注册文本,但无法获取 Web 元素的 xpath 没有获取无法定位元素消息 尝试使用以下 xpath: //按钮[@cl...

回答 2 投票 0

单个 IMDB 抓取会返回所需的文本,但应用于整个列表会返回“字符为空”

我正在学习rvest包 我能够将列表项的链接 URL 抓取为单个项目 网站 <- "https://www.imdb.com/search/title/?title_type=feature&genres=crime" ...

回答 1 投票 0

根据 IMPORTXML 中的派生标准返回 xpath 值

我正在尝试从列表中返回电影的时间和名称,但是我似乎已经走了这么远,最终还是在原地打转! 这是我正在使用的 HTML: 我正在尝试从列表中返回电影的时间和名称,但是我似乎已经走了这么远,最终还是在原地打转! 这是我正在使用的 HTML: <li> <a href="XXXXXX" class="program"> <span class="time">9:00pm</span> <div class="meta"> <h3><img src="XXXXXX" width="13" height="11" class="movie"> The Transporter 2</h3> <span class="desc">Action (2005)</span> <p>MOVIE DESCRIPTION.</p> </div> </a> </li> 每部电影/节目都会重复此格式。 我的目标是一个 XPATH 查询,它同时返回时间和标题,但是我无法理解如何在 XPATH 查询中对其进行格式化。所以现在我已经确定了两个单独的查询,一个是时间查询,另一个是标题查询,然后我可以将它们合并到谷歌表格中。 让事情变得复杂的是,列表中也可能有常规节目,因此我区分节目和电影的唯一方法是查询是否存在具有电影类别的图像。 返回标题时效果很好: =importxml(C1,"/html/body/ul/li/a/div/h3[descendant::img[@class ='movie']]//text()") 但是,当尝试返回时间时,它会返回所有时间,而不仅仅是那些有图像的时间。 我怀疑这是由于我不理解的兄弟/后代节点造成的。 我已尝试以下操作,但它仍然会始终返回,而不仅仅是标题旁边有图像类的情况。如果没有后代标准,它会返回所有节目和电影的所有时间,理想情况下我希望它只返回电影的时间。 =importxml(C1,"/html/body/ul/li/a/span[//descendant::input[//img[contains(@class, 'movie')]]]") 如果有人有任何建议,我将非常感激,因为我一整天都在兜圈子! 对于第一个 XPath 不需要 descendant::img,因为它是直接子级。 "/html/body/ul/li/a/div/h3[img[@class ='movie']]/text()" 对于第二个 XPath ,将谓词放在 a 元素上,如下所示 "/html/body/ul/li/a[descendant::img[contains(@class, 'movie')]]/span"

回答 1 投票 0

如何在Robot Framework中获取可变位置的文本

我想咨询一个与Robot Framework相关的语法问题。 HTML结构如下: 我想咨询一个与Robot Framework相关的语法问题。 HTML结构如下: <div id="testblock"> <p> </p> <p> <span class="labelText">Number: </span> " >= 2 " </p> <p> </p> <div> 我想捕获文本“ >=2 ”,它的位置可能在不同的 标签内有所不同。您能否建议正确的捕获方法? 谢谢你。 尝试了以下方法均失败: ${text}= Get Text xpath=//div[@id="testblock"]//p/span[@class='lableText' and contains(text(), 'Number: ')]/parent::p/following-sibling::p ${text}= Get Text xpath=//div[@id="testblock"]//p/span[@class='lableText' and contains(text(), 'Number: ')]/following-sibling::p 我建议您分两步进行: 查找包含所有必要文本的最近的父 Web 元素 从中获取 text 属性。 例如: ${testblock} = get webelement //*[@id="testblock"] ${my_text} = set variable ${testblock.text} log to console ${my_text} 输出:数量:“ >= 2”

回答 1 投票 0

如何让 python lxml 找到这个元素?

给定一个具有以下结构的 XML 文件: 1 给定一个具有以下结构的 XML 文件: <log> <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <EventID>1</EventID> # if this is 1 </System> <EventData> <Data Name="CommandLine">C:\Windows\system32\wbem\unsecapp.exe -Embedding</Data> # then I want this value </EventData> </Event> <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <EventID>2</EventID> </System> <EventData> <Data Name="CommandLine">C:\Windows\system32\wbem\unsecapp.exe -Embedding</Data> </EventData> </Event> </log> 我想检查所有 <Event> 如果 <EventID> = 1,然后使用 <Data Name='CommandLine'> 的值 使用此代码 from lxml import etree as ET with open(log_file_path, 'r', encoding='utf-8') as file: log_content = file.read() root = ET.fromstring(log_content) ns = {'ns' : 'http://schemas.microsoft.com/win/2004/08/events/event'} root.xpath("//ns:Event[System/EventID='1']/EventData/Data[@Name='CommandLine']", namespaces=ns) 什么也没找到。 我在在线 xpath 工具中使用相同的 xml 尝试了相同的 xpath 查询//Event[System/EventID='1']/EventData/Data[@Name='CommandLine'],它按预期工作。 我无法弄清楚问题所在,有什么想法吗? 元素上的默认命名空间也适用于其后代元素,因此请更改 //ns:Event[System/EventID='1']/EventData/Data[@Name='CommandLine'] 到 //ns:Event[ns:System/ns:EventID='1']/ns:EventData/ns:Data[@Name='CommandLine']

回答 1 投票 0

对于 XPATH,如何对不同类型的祖先使用 OR?

我试图阻止某些结果出现在我的 Google 搜索中,但我很难使用 uBlock Origin 简洁地创建单行块。 例如,我不想要“www”。伊米丰....

回答 1 投票 0

循环一组 xpath 并检查测试值

我有大约 100 个 xpath,它们仅在末尾的索引上有所不同。 样本 xpath 的范围包括: (//div[@class='某物'] //div[@class='其他一些东西'])[1] 到: (//div[@class='某物'] /...

回答 1 投票 0

使用 XPath 解析 XML 文档

假设我有以下 xml(一个简单的示例) 一个 两个 ...

回答 8 投票 0

查询工具选项卡中带有命名空间的 XPath

我正在尝试使用 XPath 查询工具(XMLSpy 中的底部选项卡)来测试使用命名空间的 XML 中的 XPath。 我不知道如何声明名称空间。 XML 示例 我正在尝试使用 XPath 查询工具(XMLSpy 中的底部选项卡)来测试使用命名空间的 XML 中的 XPath。 我不知道如何声明命名空间。 XML 示例 <?xml version="1.0" encoding="UTF-8"?> <Level1> <Level2> <Data xmlns="http://www.myns.com"> <Text>test</Text> </Data> </Level2> </Level1> 如果我选择 XQuery 3.1 作为查询语言,我可以像这样测试我的 XPath: declare namespace myns="http://www.myns.com"; //Level1/Level2/myns:Data 但是如果我选择 XPath 3.1 作为查询语言,如何定义命名空间? (简单地做//Level1/Level2/Data是行不通的。) 谢谢。 你可以试试这些 //Level1/Level2/*:Data 或 //Level1/Level2/*[local-name()='Data']

回答 1 投票 0

选择根并从 XPath 中的选择中排除节点

考虑以下文档: 我想选择roo...

回答 1 投票 0

如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

我在使用 java 查找 Selenium 中的 span 元素时遇到问题。 HTML 看起来像: 设置 而且我已经...

回答 3 投票 0

XSLT 前同级如何获取前一个非空值

我收到一个设计不佳的 CSV 文件,如下所示(此处过于简化): BizTalk 转换为 XML,但“详细信息”行上缺少“标题”值。我需要

回答 2 投票 0

单击 XPATH 永远不相同的按钮(selenium)

我尝试使用 python 单击反应页面中的按钮,但每次重新加载页面时它都会像令牌一样生成,我不知道如何让它发挥作用 这是按钮: 我尝试使用 python 单击反应页面中的按钮,但每次重新加载页面时它都会像令牌一样生成,我不知道如何让它发挥作用 这是按钮: <button class="mantine-UnstyledButton-root mantine-Button-root mantine-ap0q7a" type="submit" data-button="true"> <div class="mantine-1wpc1xj mantine-Button-inner"> <span class="mantine-1ryt1ht mantine-Button-label">Click to login</span></div></button> 编辑:那个 “mantine-1ryt1ht” 部分是把它弄乱的部分。 Mantine 始终是相同的,但以下部分是每次页面加载时都会更改的部分。 我尝试使用这个,但它不起作用: for button in WebDriverWait(chrome, 1200).until(EC.visibility_of_all_elements_located((By.XPATH, "//button[text()='Click to login']"))): button.click() 这是我完成项目时唯一缺少的东西,我不想使用像 pyautogui 这样的东西,因为我希望它最小化运行。 请将我从缺乏知识的循环中拯救出来。 所以这是一个按钮元素,它将在每个页面上都是常量,因此如果我们使用这样的循环: def find&click(): buttons = driver.find_elements(By.TAG_NAME, 'button') #this will get all the buttons on the page for button in buttons: #this will iterate through all the buttons if button.text == "Click to login" #this will find the one called "Click to login" button.click() #this clicks the button find&click() 所以这个程序会查找按钮的所有 html 标签,即 一旦找到,它将遍历每一个,查看每一个的文本,直到找到带有“点击登录”文本的一个。 一旦找到,它将单击按钮。 这不会依赖任何类名、ids 或 xpath,并且永远不会改变。 现在应该始终可以找到页面上的按钮并单击它。如果您需要任何其他愉快的编码,请告诉我:) button[text() 将不起作用,因为该字符串没有直接的 text() 节点。 您可以尝试以下 XPath: A.使用 text()-node 的显式路径 //button[div/span/text()='Click to login'] 或 B.使用 normalize-space(.),其中 . 是组合的 text() 节点,标准化空间将消除可选的空白字符。 //button[normalize-space(.)='Click to login'] 或 C.在组合的 text() 节点上使用 contains。 //button[contains(.,'Click to login')]

回答 2 投票 0

我想从具有两种类型的类的html页面中提取文本

我想从html页面中提取运费。但我需要从两种类型的 html 页面中提取运费。 对于一页,Xpath 是 //*[@class="flex flex-row ju...

回答 1 投票 0

使用Python + Selenium选择shelly

所以我是在 Python 中使用 Selenium 的新手。我想访问特定网站上的 xpath。 要访问该网站,必须首先使用帐户登录,所以我的问题并不能真正重现...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.