Selenium怎么獲取動態id,type型別是dialog,正常頁面元素是隱藏的,每次點擊后,元素的id都是動態變化的,怎么獲取每次彈出的頁面提示,希望大神幫忙解決一下,困擾很長時間了,感激不盡
uj5u.com熱心網友回復:
我也是剛學selenium的小白,我有個很笨的處理方式,就是對動態id數字從1開始回圈,每次+1,直到id存在并是我要的,再點擊,代碼如下(方法很蠢,多多指教)。def isElementExist1(count, xpath,data):
if browser.find_element_by_xpath(xpath).text == data:
browser.find_element_by_xpath(xpath).click()
else:
addcount1(count, xpath,data)
def addcount1(count,xpath,data):
if count <= 20:
count = count + 1
xpath = '//*[@id="_easyui_combobox_i37_'+str(count)+'"]'
isElementExist1(count, xpath,data)
最后掉用下方法:
data = "xxx" #你要點擊的text值
xpath = '//*[@id="_easyui_combobox_i37_'+str(count)+'"]' #xpath
isElementExist1(count, xpath,data)
uj5u.com熱心網友回復:
建議通過其他的方式去獲取uj5u.com熱心網友回復:
通過XPath獲取元素uj5u.com熱心網友回復:
動態ID的產生取決于前端使用的框架,既然是動態的,你就不能用ID定位元素了,建議換個方法uj5u.com熱心網友回復:
通過XPath定位,格式://*[@class="......"]uj5u.com熱心網友回復:
這種的動態的,建議你加一個WebdriverWait等待,它只要一出來,你就能抓到它里面的text
#xxxx: 標簽里面的內容(最好手動復制,有的文本帶有空格,有坑),雙擊就復制,注意這個.text的位置,應該跟在定位元素代碼的后面
alert_title = WebDriverWait(web, 3, ).until(lambda x: web.find_element(By.CSS_SELECTOR, 'div.avator span').text)
if alert_title == "xxxx":print("登陸成功!")
else:print("登錄失敗!")
uj5u.com熱心網友回復:
用 xpath啊很好用的uj5u.com熱心網友回復:
不要用id去定位,可以用其他屬性定位元素如//div[contains(@class,'layui') and @type='dialog']等等,然后再通過定位到的元素回傳id值uj5u.com熱心網友回復:
是驗證碼嗎?可以讓開發設定一個萬能驗證碼...上線后取消就可以了uj5u.com熱心網友回復:
不能換個方式去定位嘛。用xpath啊uj5u.com熱心網友回復:
通過絕對路徑取拿uj5u.com熱心網友回復:
應該是數字會變字母不會變,用starts-with() 應該就可以了轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21380.html
標籤:軟件測試
