【问题标题】:Selenium with Python -- finding element without proper identifiersSelenium with Python - 查找没有正确标识符的元素
【发布时间】:2017-11-15 16:24:35
【问题描述】:

我正在使用 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="">

问题是已经有另一个输入框名称为“金额”,所以我无法按名称进行简单的选择。我想这需要我使用 CSS 选择器,但到目前为止我尝试过的一切都没有奏效。请让我知道我可以尝试什么。

【问题讨论】:

  • 能否提供类似输入框的代码?如果它们完全相似,您最好的选择可能是通过 XPath 进行选择。
  • 使用 Xpath 人,这就是要走的路。
  • 同名的两个输入元素是否位于不同的元素下?您可以通过提供唯一标识父元素和输入元素的 CSS 选择器或 XPath 来唯一标识您的目标
  • 欢迎来到 Stack Overflow!请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享该研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • 你试过我的答案了吗?如果它有帮助 - 请在我的答案附近打勾。谢谢。

标签: javascript python selenium


【解决方案1】:

看起来您需要使用 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

但这是最坏的情况,通常您可以基于元素属性使用更灵活的定位器,这些定位器不太可能受到页面结构修改的影响。假设上面页面中的每个输入都有“name”和“disabled”属性。

<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=""]

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2013-10-19
    • 2016-06-19
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多