【问题标题】:Selenium java - not able to identify the text box by xpath, cssSelenium java - 无法通过xpath,css识别文本框
【发布时间】:2017-09-07 14:35:54
【问题描述】:

下面是我尝试使用 chromdriver 识别的文本框的 HTML sn-p

【问题讨论】:

  • 欢迎来到 Stack Overflow!请edit您的帖子包含您对问题的任何其他信息。避免在 cmets 中添加它,因为它们更难阅读并且更容易删除。帖子的编辑按钮就在帖子标签的下方。还请务必阅读How to Ask 并了解minimal reproducible example 的构成要素。

标签: css google-chrome selenium xpath


【解决方案1】:

您可以使用以下 Xpath:

//input[@placeholder="Scan Serial No"]

使用多个属性

//input[@placeholder="Scan Serial No"][contains(@class,'FC2 ELX_UserPrompt')]

【讨论】:

  • 已经试过了,还是不行。它说无法识别元素 WebElement validate = driver.findElement(By.xpath("//input[@placeholder='Scan Serial No']"));
【解决方案2】:

为了获得选择器,我使用了一些技术。

首先我使用 Chrome 开发者工具的内置工具。用 ctr+shift+i 打开这些。然后找到你想要的元素,ctrl+shift+c然后点击元素。这会在“元素”选项卡中突出显示您想要的元素。右键单击突出显示的元素并选择复制>复制选择器。这将为您提供该项目的唯一 css 选择器。这适用于除页面上具有更改 id 或位置的动态元素之外的所有内容。

对于动态元素,我使用高级 CSS 选择器。除了任何 css 属性之外,您还可以在其中利用 html 标记来定位元素。这是一篇关于如何使用这些https://www.smashingmagazine.com/2009/08/taming-advanced-css-selectors/#comments 的不错的文章 对于你的特定元素,你可以做类似input[placeholder='Scan Serial No']

【讨论】:

    【解决方案3】:

    您可以使用以下 xpath:

    • xpath 中的类名

      //input[@class='FC2 ELX_UserPrompt binding_Screen_cc607e87_a82b_4cac_8c38_939be2ba00ff_SerialNo??']
      
    • 类名和占位符

      //input[@class='FC2 ELX_UserPrompt binding_Screen_cc607e87_a82b_4cac_8c38_939be2ba00ff_SerialNo??'][@placeholder='Scan Serial No']
      

    【讨论】:

    • 可能你没有注意到,但是下面的类是动态的而不是固定的。 binding_Screen_cc607e87_a82b_4cac_8c38_939be2ba00ff_SerialNo
    猜你喜欢
    • 2020-06-20
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多