因此,我正在使用 selenium 實作自動化并遇到一個問題,即每次重繪 頁面時,元素 ID 都會發生變化,無論我是否復制 XPATH、CSS 選擇器、ID,它們都有一個會發生變化的數字。
所以我使用的代碼很簡單,我只想點擊我可以完成的按鈕
browser.find_element(by=By.CSS_SELECTOR, value='*VALUE HERE*').click()
但我不知道該把什么作為價值。這是HTLM代碼
<a class="x4-tab x4-unselectable x4-box-item x4-tab-default x4-noicon x4-tab-noicon x4-tab-default-noicon x4-top x4-tab-top x4-tab-default-top x4-tab-after-title x4-active x4-tab-active x4-tab-default-active x4-top-active x4-tab-top-active x4-tab-default-top-active" hidefocus="on" unselectable="on" id="tab-1965" tabindex="0" data-ui-comp-name="wm-np-tab-wrkstn" style="right: auto; left: 66px; margin: 0px; top: 0px;">
<span id="tab-1965-btnWrap" role="presentation" class="x4-tab-wrap" unselectable="on">
<span id="tab-1965-btnEl" class="x4-tab-button" role="presentation">
<span id="tab-1965-btnInnerEl" class="x4-tab-inner x4-tab-inner-center"
unselectable="on">Workstations</span>
<span role="presentation" id="tab-1965-btnIconEl" class="x4-tab-icon-el " unselectable="on"
style="">
</span>
</span>
</span>
</a>
如果您查看 HTML,在任何看到數字 1965 的地方,如果頁面被重繪 ,該數字就會改變。無論那個數字是多少,我如何讓硒找到這個元素?
另外,不確定這是否重要,但這都在一個 iframe 中,我使用 selenium 目標
frame1 = browser.find_element(by=By.CLASS_NAME, value='defaultView')
browser.switch_to.frame(frame1)
此外,另一個問題是 HTML 代碼幾乎與其他按鈕相同,按鈕之間的唯一區別是數字(變化)以及“作業站”的位置。這是旁邊另一個按鈕的示例,這個按鈕用于服務器。
<span id="tab-1964-btnWrap" role="presentation" class="x4-tab-wrap" unselectable="on">
<span id="tab-1964-btnEl" class="x4-tab-button" role="presentation">
<span id="tab-1964-btnInnerEl" class="x4-tab-inner x4-tab-inner-center"
unselectable="on">Servers</span>
<span role="presentation" id="tab-1964-btnIconEl" class="x4-tab-icon-el"
unselectable="on" style="">
</span>
</span>
</span>
</a>
uj5u.com熱心網友回復:
您可以為此使用 XPath:
browser.find_element(by=By.XPATH, value="//span[starts-with(@id, 'tab-') and contains(@id, '-btnEl')]").click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/473977.html
上一篇:檢測所有名稱并獲取它們與SeleniumPython的鏈接
下一篇:如果元素不存在,則硒忽略
