Python selenium id号是动态的
我有一个html,如下所示:Python selenium id号是动态的,selenium,python-3.8,Selenium,Python 3.8,我有一个html,如下所示: <div class="v-window-outerheader"><div class="v-window-maximizebox" tabindex="0" role="button" aria-label="maximize button" id="38_window_maximizerestore"></div> <div class="v-window-closebox" tabindex="0" role
<div class="v-window-outerheader"><div class="v-window-maximizebox" tabindex="0" role="button" aria-label="maximize button" id="38_window_maximizerestore"></div>
<div class="v-window-closebox" tabindex="0" role="button" aria-label="close button" id="38_window_close"></div>
但是,ID号37\u window\u close
经常变化。今天的id是38\u window\u close
其余的html代码保持不变。如何修改代码,使代码不会因ID的更改而中断
弹出框如下所示,其中X
位于右上角,可将其关闭:
使用aria label=“close button”
属性
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或类属性
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或者使用id为的contains
wait.until(EC.presence_of_element_located((By.XPATH, '//*[contains(@id,"_window_close")]'))).click()
使用aria label=“close button”
属性
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或类属性
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或者使用id为的contains
wait.until(EC.presence_of_element_located((By.XPATH, '//*[contains(@id,"_window_close")]'))).click()
对于动态ID,可以匹配子字符串而不是精确的字符串。 使用以下XPath:
//div[contains(@id,"_window_close")]
或CSS:
div[id*="_window_close"]
希望这有帮助:)对于动态ID,您可以匹配子字符串而不是精确的字符串。 使用以下XPath:
//div[contains(@id,"_window_close")]
或CSS:
div[id*="_window_close"]
希望这有帮助:)