【问题标题】:Selenium Search By labelSelenium 按标签搜索
【发布时间】:2019-09-19 15:11:06
【问题描述】:

我正在做一个自动化项目,我的问题很明确: 我的主管不是通过 (xpath and id) 查找元素,而是希望我通过标签名称来定位元素: 例子: 用户

<form id="loginForm" novalidate="" method="post">
<div class="form-group">
    <label class="control-label" for="username" data-i18n="label.user">User</label>
    <input type="text" placeholder="<username>" title="name.." d="username">
    <span class="help-block small">Your unique username to client</span>
</div>

这个想法是用户只会告诉我将我的用户名“xxx”放入标签“用户”中,并且我必须找到该标签的输入。 请问有办法吗?在硒中找到给定标签的输入? (我正在使用java)

【问题讨论】:

  • 如果您要通过包含在另一个元素中的文本来定位一个元素,您将不得不使用 XPath...没有其他方法。你试过什么?您的代码或定位器尝试在哪里?

标签: java selenium


【解决方案1】:

这在自动化中很常见。您可以根据其标签定位输入字段。您可以将以下逻辑应用于大多数字段。

这是在 Python 中。

myinput = driver.find_element_by_xpath("//label[contains(text(),'User')]/following::input[1]")
myinput.send_keys("you text")

【讨论】:

  • 谢谢它的工作,但我在我的项目中遇到了最大的问题,自 2 个月以来我找不到解决方案,看我的项目是一个机器人自动化,应该可以在任何网站上工作,我需要解决的问题开发一个功能“SearchInFrames”,假设查看网页的所有框架,并找到我正在寻找的元素。但是一个网页可以包含无限数量的帧(frame1,frame 2,frame3 ...),每个帧可以包含另一个帧(frame1.1,frame1.2 ....),所以我需要一个 RECURSIVE 方法能够查看所有帧,直到找到元素
【解决方案2】:

通过文本查找label,获取第一个父div并在div

中获取输入
//label[.='User']/ancestor::div[1]/input

与之前相同,删除标签文本中的空格

//label[normalize-space(.)='User']/ancestor::div[1]/input

通过文本查找带有子 labeldiv,并在 div

中获取 input
//div[./label[.='User']]/input

【讨论】:

  • 谢谢它的工作,但我在我的项目中遇到了最大的问题,自 2 个月以来我找不到解决方案,看我的项目是一个机器人自动化,应该可以在任何网站上工作,我需要解决的问题开发一个功能“SearchInFrames”,它假设查看网页的所有框架,并找到我正在寻找的元素。但是一个网页可以包含无限数量的帧(frame1,frame 2,frame3 ...),每个帧可以包含另一个帧(frame1.1,frame1.2 ....),所以我需要一个 RECURSIVE 方法能够查看所有帧,直到找到元素
  • 如果此答案或任何其他答案解决了您的问题,您可以投票并标记为已接受,how to accept the answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2017-05-25
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多