【问题标题】:Find element by name using wildcard?使用通配符按名称查找元素?
【发布时间】:2019-03-14 18:49:52
【问题描述】:

我正在尝试使用通配符输入字段。我有 5 个页面,它们都收集相同的信息,但字段从 1 增加到 5。我的想法是通过获取通用名称(例如“first_name”或“last_name”)来查找元素,但我不断收到“未找到元素”我的尝试中的错误。下面是输入的样子。

<input class="a-field" id="textfield_123" type="text" name="person_1_first_name" value="">

我尝试了以下方法,但它返回“无法定位元素”。

driver.find_element_by_name('//input[contains(@name, "middle_Name")]').clear()

【问题讨论】:

  • 如果你知道字符串是什么,为什么要使用通配符?为什么不"the_part_you_know{}".format(number)
  • @reedinator 我想使用通配符编写,这样我就可以在每个页面上运行相同的代码,而不是重写该过程五次。
  • 一个函数的目的不就是避免重写n次过程吗??
  • xpath //input[contains(@name,'middle_name')] 看起来不错。但我预测您的应用程序中可能会有一些框架/窗口。这导致识别元素的问题。希望您在检查元素之前等待足够的时间来完全加载页面。
  • @supputri 使用 driver.find_element_by_name('person_1_first_name') 可以正常工作,所以这不是渲染问题。

标签: python python-3.x selenium selenium-webdriver selenium-chromedriver


【解决方案1】:
def wildcard = “string”

driver.find_element_by_name(f”//input[contains(@name, ‘{wildcard}’]”).clear()

我不知道他们从哪里得到这个,但是在 xpath 中的第一个引号之前有“f”使它接受变量。让我知道这是否有帮助

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2011-08-15
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多