相关文章推荐
叛逆的沙发  ·  Convert data ...·  3 周前    · 
沉稳的木瓜  ·  Python_PyCharm_Turtle- ...·  2 周前    · 
叛逆的长颈鹿  ·  offset commit failed ...·  1 周前    · 
淡定的炒饭  ·  迁移的详细功能支持·  1 年前    · 
谦虚好学的烤地瓜  ·  How To have Dynamic ...·  1 年前    · 
有腹肌的煎饼果子  ·  46 ...·  1 年前    · 
道上混的炒粉  ·  Delphi ...·  1 年前    · 

selenium 动态id

在使用 Selenium 操作网页时,经常会出现一些动态生成的元素或者动态生成的 ID,这给定位元素造成了困难。与动态 ID 相关的情况包括:

  • 在每次页面刷新时,元素的 ID 发生改变。如下的 HTML 代码:
  • <input type="text" id="id-1">
    

    在网页刷新后,ID 将变成 id-2id-3id-4……等等。

  • 在每次打开网页时,元素的 ID 发生改变。如下的 HTML 代码:
  • <input type="text" id="dynamic-id">
    

    每次打开网页后,ID 将是随机生成的,如 id="B18B0B14F4D45BFC027E12AC8F6CE18C"。这时候需要使用一些技巧来定位这些元素。

    解决方法:

  • 使用 xpath 定位元素,xpath 可以使用通配符来匹配部分属性,如 id。例如,使用如下 xpath 就可以匹配上上面的元素:
  • //input[contains(@id,'id-')]
    
  • 使用正则表达式匹配动态 ID。在使用 Selenium 定位元素时,可以使用正则表达式作为 ID 的值,如下:
  • driver.find_element_by_xpath("//input[contains(@id, 'regex:^id-')]")
    

    其中,regex:^id- 就是表示 ID 值以 id- 开头的正则表达式。

    总之,使用动态 ID 时,我们需要采取一些技巧来定位这些元素,比如使用通配符、使用正则表达式等等。

  •