我正在使用selenium和python来编写代码。我希望从文本框中提取信息。当其他信息被填写时,该框自动填充。检查该框提供以下代码:
<input type="tel" autocomplete="off" name="amount" step="any" class="form-
control ng-pristine ng-untouched ng-valid ng-isolate-scope ng-not-empty"
placeholder="" tw-focusable="" show-decimals="$ctrl.showDecimals" tw-number-
input-formatter="" ng-change="$ctrl.changedAmount()" ng-
model="$ctrl.ngModel" ng-disabled="$ctrl.ngDisabled" disabled="disabled"
style="">
问题是已经存在另一个名为“amount”的输入框,因此我不能按名称进行简单的选择。我认为这需要我使用CSS选择器,但到目前为止我尝试过的所有内容都没有用。请让我知道我可以尝试的内容。
答案 0 :(得分:0)
看起来您需要使用CSS或XPath定位器。 由于您还没有提供整个页面的来源,因此很难确定您是如何找到该元素的,但这里有一些提示。 在最糟糕的情况下,如果您找不到任何属性组合,这些属性将唯一地标识您需要依赖于dom节点层次结构的元素,即为了在下一页上找到第一个输入:
<!DOCTYPE html>
<html>
<head>
<title>Dummy page</title>
</head>
<body>
<div>
<div>
<input type="text">
</div>
<p>
<input type="text">
</p>
<input type="text">
</div>
</body>
</html>
您可以使用看起来与此类似的XPath定位器:
//div/div/input
但这是最糟糕的情况,通常您可以使用更灵活的定位器,这些定位器基于不太可能受页面结构修改影响的元素属性。让我们说上面页面中的每个输入都有&#34; name&#34;并且&#34;禁用&#34;属性。
<div>
<div>
<input name="input1" disabled="" type="text">
</div>
<p>
<input name="input1" disabled="disabled" type="text">
</p>
<input name="input2" disabled="" type="text">
</div>
然后我们可以使用以下定位器找到第一个输入:
//input[@name="input1" and @disabled=""]
希望有所帮助。