什么是正确的 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 来实现。在你的情况下你 inputname = Monthtimeparentid = col3-month45,所以请试试这个方法:

find_element_by_xpath('//input[@name="Monthtime" and ./parent::*[@id="col3-month45"]]')