select 具有不断变化的 xpath 的元素

select element with changing xpath

Example Image

说我想 select 带有 class=kbkey 按钮的元素 red_selected 选择。图片中示例的 xpath 为 //*[@id="virtualKeysWrapper"]/div[3],所以我有以下代码:

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="virtualKeysWrapper"]/div[3]'))).click()

但是,每次我刷新站点时,该元素的 div 位置都会发生变化。想知道我应该怎么做才能成功 select 元素 class=kbkey 按钮 red_selected sel 每次都成功?

出于这个原因,尽可能避免在 XPath 中使用索引位置。在不知道 DOM 的其余部分到底是什么样子的情况下,我最好的猜测是您可以使用以下表达式:

//div[@id='virtualKeysWrapper']/div[@class='kbkey button red_selected sel']

或者,您可以使用

//div[@id='virtualKeysWrapper']/div[@sel='true']