什么是正确的 xpath?
What's the correct xpath?
html与table内的输入相同。它由 td 区分,但这是输入之前的行。我可以通过 find_element_by_id("col3-month46")
找到 td 但那不是输入的地方。我如何编写一个 xpath 来找到 td 然后转到输入?
我尝试过使用 xpath(我相信这就是我获取输入的方式)。
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col11-month44">
<!---->
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month45">
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month46">
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
嗯,当我通过 ID 找到它时,它说它不是一个输入字段。如果我通过输入标签找到它,那么使用 selenium 它只会在第一个实例而不是我想要的地方输入。
您可以找到您要查找的 td
元素,然后搜索其子 input
元素。
所以这个 XPath 应该适合你:
//td[@id="col3-month46"]/input
并且在 Python 硒中:
find_element_by_xpath('//td[@id="col3-month46"]/input')
您可以使用 Chropath 扩展检查您的 Xpath 当您单击检查和 Select ChroPath 您将看到您的 Xpath:
这里有 LINK:
https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo
这是屏幕截图:
您还可以通过单击复制按钮复制您的 XPath 此扩展将为您提供 REL XPATH ~ ABS XPATH ~ CSS 选择器
这里有 LINK:
https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo
并且此扩展也适用于 FIREFOX,这里是 FIREFOX LINK:
https://addons.mozilla.org/en-US/firefox/addon/chropath-for-firefox/?src=search
您似乎想要在 parent
中获取具有唯一 ID 的 input
,您可以使用 xpath
来实现。在你的情况下你 input
有 name = Monthtime
而 parent
有 id = col3-month45
,所以请试试这个方法:
find_element_by_xpath('//input[@name="Monthtime" and ./parent::*[@id="col3-month45"]]')
html与table内的输入相同。它由 td 区分,但这是输入之前的行。我可以通过 find_element_by_id("col3-month46")
找到 td 但那不是输入的地方。我如何编写一个 xpath 来找到 td 然后转到输入?
我尝试过使用 xpath(我相信这就是我获取输入的方式)。
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col11-month44">
<!---->
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month45">
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
<td _ngcontent-c4="" class="text-center ng-pristine ng-valid ng-touched" formarrayname="timedoe" id="col3-month46">
<input _ngcontent-c4="" max="24" maxlength="4" min="0" name="Monthtime" size="2" class="ng-pristine ng-valid ng-touched" type="number">
</td>
嗯,当我通过 ID 找到它时,它说它不是一个输入字段。如果我通过输入标签找到它,那么使用 selenium 它只会在第一个实例而不是我想要的地方输入。
您可以找到您要查找的 td
元素,然后搜索其子 input
元素。
所以这个 XPath 应该适合你:
//td[@id="col3-month46"]/input
并且在 Python 硒中:
find_element_by_xpath('//td[@id="col3-month46"]/input')
您可以使用 Chropath 扩展检查您的 Xpath 当您单击检查和 Select ChroPath 您将看到您的 Xpath:
这里有 LINK: https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo
这是屏幕截图:
您还可以通过单击复制按钮复制您的 XPath 此扩展将为您提供 REL XPATH ~ ABS XPATH ~ CSS 选择器
这里有 LINK:
https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo
并且此扩展也适用于 FIREFOX,这里是 FIREFOX LINK:
https://addons.mozilla.org/en-US/firefox/addon/chropath-for-firefox/?src=search
您似乎想要在 parent
中获取具有唯一 ID 的 input
,您可以使用 xpath
来实现。在你的情况下你 input
有 name = Monthtime
而 parent
有 id = col3-month45
,所以请试试这个方法:
find_element_by_xpath('//input[@name="Monthtime" and ./parent::*[@id="col3-month45"]]')