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

时间:2017-04-13 18:30:48

标签: python selenium automation beautifulsoup

基本上我正在进行网络抓取/网站自动化,

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

我正在处理一个包含表单的动态页面,我想以这种形式插入数据。

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

  1. Listing.Item [国际象棋大小]
  2. Listing.Item [鞋尺寸]
  3. Listing.Item [尺寸 Trouser]
  4. Listing.Item [尺寸
  5. Listing.Item [鞋尺寸]
  6. 相同的模式是字符串'Size'。

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

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

    但它不起作用。也许我错误地使用'any()'函数。

      

    如何在我遇到的每个页面中自动找到此唯一输入,其ID中始终包含字符串'Size'?

    XPath& CSS Selector还包含另一个单词(对于此示例:Chess,Shoe和Trouser),因此我无法使用它们

    感谢您的帮助

    编辑:

    以下是完整的相应HTML:

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

    =&GT;每次更改名称和ID的值

1 个答案:

答案 0 :(得分:1)

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

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

例如,如果您要搜索包含“大小”一词的所有输入标记,则使用:

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