表中输入的html相同。它用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找到它时,它说它不是输入字段。如果要通过input标签找到它,则使用硒时,它将仅在第一个实例处输入,而不在我想要的位置输入。
答案 0 :(得分:2)
您可以找到所需的td
元素,然后搜索其子input
元素。
因此,此XPath应该适合您:
//td[@id="col3-month46"]/input
在Python Selenium中:
find_element_by_xpath('//td[@id="col3-month46"]/input')
答案 1 :(得分:2)
似乎您想在input
中获得一个具有唯一ID的parent
,您可以使用xpath
来实现。在您的情况下,您input
有name = Monthtime
,而parent
有id = col3-month45
,所以请尝试以下方法:
find_element_by_xpath('//input[@name="Monthtime" and ./parent::*[@id="col3-month45"]]')
答案 2 :(得分:0)
您可以使用Chropath扩展名检查Xpath单击检查并选择ChroPath,您将看到Xpath:
这里是链接: https://regex101.com/r/PGsguA/1
“这里是屏幕快照” : https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo
您还可以通过单击复制按钮来复制XPath。此扩展将为您提供REL XPATH〜ABS XPATH〜CSS SELECTOR
这里是链接:
FIREFOX的此扩展也是FIREFOX链接:
https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo