所以我通常使用driver.find_element_by_xpath('//input[@id=(//*[contains(text(), "User Name")]/@for)]')
在文本框中输入信息,但这并不适用于以下代码:
<div class="form-group text-entry required ">
<div class="label-set" id="answerTextBox-30918642">Primary User Name (First and Last Name)</div>
<div class="group-set" role="group" aria-labelledby="answerTextBox-30918642">
<input id="pageResponse_Responses_Index" name="pageResponse.Responses.Index" type="hidden" value="fta30918642">
<input class="freeTextAnswerId form-control" id="pageResponse_Responses_fta30918642__FreeTextAnswerId" name="pageResponse.Responses[fta30918642].FreeTextAnswerId" type="hidden" value="30918642">
<label for="answerTextBox-30918642-free" class="sr-only">Write-In Answer</label>
<input class="form-control free-text" id="answerTextBox-30918642-free" name="pageResponse.Responses[fta30918642].FreeText" type="text" value="">
</div>
</div>
我尝试使用xpath来选择输入,
driver.find_element_by_xpath("//label[contains(.,'User Name')]/following-sibling::input[1]")
但到目前为止,我到目前为止没有尝试过任何事情。这可以找到包含标签driver.find_element_by_xpath("//*[contains(text(), 'User Name')]")
的元素,但我的问题是选择要发送密钥的输入。
答案 0 :(得分:1)
您可以将XPath简化为
//div[contains(.,'User Name')]/following::input[@type='text']
following
轴表示在上下文节点之后显示的所有节点,但任何descendant
,attribute
和namespace
节点除外。
其他INPUT
被隐藏,因此指定@type='text'
只会找到您想要的那个。
答案 1 :(得分:0)
所以我能够将它融入Santhosh的建议:
//*[contains(text(), \"User Name\")]/../div//input[@class='form-control free-text']