Python selenium id 号码是动态的
Python selenium id number is dynamic
我有一个 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="button" aria-label="close button" id="38_window_close"></div>
此代码用于登录网站时弹出的消息框。
我一直在使用下面的代码点击右上角的X
来关闭弹出消息:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.common.keys import Keys
path_to_chromedriver = r'C:\chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path=path_to_chromedriver)
wait = WebDriverWait(browser, 10)
browser.get("https://ftrcenter.pjm.com/ftrcenter/pages/secure/")
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="37_window_close"]'))).click()
但是,ID 号37_window_close
经常更改。今天的 id 是 38_window_close
html 代码的其余部分保持不变。如何修改我的代码,以免我的代码因 ID 更改而中断?
弹出框如下,右上角X
关闭:
使用 aria-label="close button"
属性。
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
或class属性。
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或使用包含 ID
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"]
希望这对您有所帮助:)
我有一个 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="button" aria-label="close button" id="38_window_close"></div>
此代码用于登录网站时弹出的消息框。
我一直在使用下面的代码点击右上角的X
来关闭弹出消息:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.common.keys import Keys
path_to_chromedriver = r'C:\chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path=path_to_chromedriver)
wait = WebDriverWait(browser, 10)
browser.get("https://ftrcenter.pjm.com/ftrcenter/pages/secure/")
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="37_window_close"]'))).click()
但是,ID 号37_window_close
经常更改。今天的 id 是 38_window_close
html 代码的其余部分保持不变。如何修改我的代码,以免我的代码因 ID 更改而中断?
弹出框如下,右上角X
关闭:
使用 aria-label="close button"
属性。
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@aria-label="close button"]'))).click()
或class属性。
wait.until(EC.presence_of_element_located((By.XPATH, '//*[@class="v-window-closebox"]'))).click()
或使用包含 ID
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"]
希望这对您有所帮助:)