【问题标题】:How to find all elements of form Using Selenium如何使用 Selenium 查找表单的所有元素
【发布时间】:2021-04-17 12:37:32
【问题描述】:

我正在尝试使用 selenium 获取表单的所有元素,但我似乎无法完成它。我需要在不写下表单中元素的 id 或类的情况下动态执行此操作,Selenium 应该检测表单并自动获取表单中存在的所有元素名称。

我面临的问题是表单使用的是动作而不是类。

Here is the website

driver = webdriver.Chrome()
driver.get("http://stevens.ekkel.ai")
#find all form input fields via form name
content = driver.find_element_by_class_name('form')

print(content)

【问题讨论】:

  • 实际上没有以类名“form”开头的元素。您需要使用driver.find_element_by_tag_name("form")。
  • 指向页面的链接很有用,但 HTML 明天可能会改变,然后这个问题就没用了。您需要编辑您的问题并添加相关的 HTML,格式正确,并清楚您希望从页面中获得什么。具体一点,给出期望输出的例子。
  • @JeffC 我正在捕获屏幕截图并裁剪此网站上的文本、按钮和表单,我面临的唯一问题是我正在获取文本屏幕截图,但是为表单和按钮获取黑色屏幕截图为什么我需要获取该表单和按钮并获取它的屏幕截图。该表单可以通过 tag_name 访问,但它仍然没有截屏
  • 您在谈论屏幕截图,但您的问题中没有提到这些。我现在更困惑了。您需要重写您的问题并明确说明 1)您正在尝试做什么(用文字而不是代码来描述),2)发布您当前的代码尝试并解释它的输出是什么,3)解释预期的输出是什么,然后 4) 发布相关的 HTML(作为文本,格式正确)。一旦你做了这些事情,我们就可以开始尝试帮助你了。

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


【解决方案1】:

您要打印表单的姓名、人员、日期、消息值吗?

content = driver.find_element_by_tag_name('form')
for input in content.find_elements_by_xpath('./p/input'):
    print(input.get_attribute('name'))

下面将在表单中查找任何具有 name 属性的 html 元素并打印它。

content.find_elements_by_xpath('.//*[@name]')

【讨论】:

【解决方案2】:

你可以使用find_element_by_tag_name:

content = driver.find_element_by_tag_name('form')

当有多种形式可供选择时,这可能会出现问题。然后您必须使用find_elements_by_tag_name 并可能稍后手动选择。

【讨论】:

  • 但是通过打印内容它显示了这个“ " 我仍然找不到名称、编号和所有其他元素
  • @Khasif 是的,您现在想要获取作为输入的表单的子项。 content.find_elements_by_tag_name('input') 也是如此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2013-11-10
  • 2018-07-25
  • 2020-10-06
  • 2015-11-10
  • 1970-01-01
  • 2023-04-01
相关资源
最近更新 更多