【问题标题】:Why Selenium Python Select Returns Blank Text When Option Text Exists为什么 Selenium Python Select 在选项文本存在时返回空白文本
【发布时间】:2020-10-07 20:27:11
【问题描述】:

我有一个select,看起来像这样:

<select data-origvalue="" multiple="multiple" name="project_9999" id="project_9999" style="display: none;">
<option value="1">Option1</option>
<option value="2">Option2</option>
</select>

我正在尝试查看这样的选项...

select = Select(driver.find_element_by_id('project_9999'))
print([o.text for o in select.options])

...导致:

['','']

为什么每个选项的文本没有出现在列表中?如果选项不完全可见,我将如何选择其中一个选项?

【问题讨论】:

  • 我没有看到名为 project_template_1511 的元素。
  • 如果您第二次使用select = ...,那么您将删除之前的值。你有没有在每个select = ... 之后使用print(select)
  • 另外,您所说的 ... 是什么意思,结果是: ?您所做的就是找到一个元素并从中初始化一个Select 对象;没有代码可以打印出 Select 对象的选项。
  • 用真实的 url 更好地创建最小的工作代码。然后我们可以运行它并测试可能出现的问题。
  • 非常抱歉 - 我粘贴了错误的代码行。现在更新了。

标签: python html python-3.x selenium


【解决方案1】:

您需要遍历project_9999 的子元素,而不是父select 元素。你可以这样做

options = driver.find_element(By.ID, 'project_9999')
for option in options.find_elements(By.TAG_NAME, 'option'):
    print(option.get_attribute('innerHTML'))

返回

Option1
Option2

如果元素不存在等,您可能需要添加一些错误处理。

【讨论】:

  • 我将如何实际选择使用此方法的选项之一?
  • 因为您的元素是display: none,我认为您必须使用Javascript 选择它。您可以将display 设置为显示或手动选择您的选项。
猜你喜欢
  • 1970-01-01
  • 2021-03-12
  • 2021-07-07
  • 2020-02-15
  • 2012-03-02
  • 1970-01-01
  • 2022-01-19
  • 2010-09-08
  • 2012-09-24
相关资源
最近更新 更多