python3/selenium/automation - 查找包含给定字符串的 ID

标签 python selenium automation beautifulsoup

所以基本上我正在做网络抓取/网站自动化,

这是我正在尝试做的一个简单示例:

我正在处理包含表单的动态页面,并且我想在此表单中插入数据。

当然,这个动态页面会根据我在此页面上发生之前插入的内容而变化。下面是我尝试在其中插入数据的 5 个不同页面的输入字段 ID 的示例。因此它是自动生成的,并且是唯一的:

  1. Listing.Item[国际象棋尺寸]
  2. Listing.Item[鞋子尺码]
  3. Listing.Item[尺码裤子]
  4. Listing.Item[尺寸]
  5. Listing.Item[鞋子尺码]

这里的字符串“Size”也是相同的模式。

我需要在此字段中插入数据,否则,我无法在表单上继续前进。这就是我尝试过的:

driver.find_element_by_id('Listing.Item[' + any(str) + 'Size' + any(str) + ']')

但是这不起作用。也许我错误地使用了函数“any()”。

How can automatically find this unique input in every page I come across, which always contains the string 'Size' in its ID ?

XPath 和 CSS 选择器还包含另一个单词(对于本例:Chess、Shoe 和 Trouser),因此我无法使用它们

感谢帮助

编辑:

这是完整的相应 HTML:

 <input type="text" id="Listing.Item[Shoe Size]"
 name="_st_Shoe Size" size="21" maxlength="50"
 aria-required="true" value="">

=> name 和 id 的值每次都会改变

最佳答案

您可能想要尝试的是find_elements_by_css_selector。该函数接受(顾名思义)CSS 选择器来返回元素。

CSS 选择器允许您搜索包含特定值的 ID。

例如,如果您要搜索 id 包含单词“Size”的所有输入标记,则可以使用:

css_selector = 'input[id*=Size]'
driver.find_elements_by_css_selector(css_selector)

*= 表示“包含”。

以下是一些您可能会觉得有用的资源:

Selenium CSS Selectors

Another question similar to this

Nice compilation of CSS selectors

关于python3/selenium/automation - 查找包含给定字符串的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399353/

相关文章:

python - "utf-8-sig"是否适契约(Contract)时解码 UTF-8 和 UTF-8 BOM?

python - uWSGI 闲置后不重启

java - Web 应用程序测试中的完整字段从 Python/Eclipse/DyDev 中的映射文档调用数据

java - 如何使用java按下selenium中的删除按钮?

javascript - Electron 使用多个 js 脚本自动化 webview

python - 将函数存储在列表中并稍后调用它们

python - 导入错误 : No module named numpy on spark workers

selenium - 如何忽略失败案例并继续下一个值

java - 自动修复 Sonar 发现的问题

C++:为什么 int array[size] 有效?