xpath定位動態屬性的元素


重新學習selenium的各種元素定位。昨天就和上傳文件杠上了。

拿來練手的是163郵箱,結果發現添加附件按鈕死活定位不到。—— 花了一天時間,用chrome自帶的控制台查看元素,xpath、css、fullxpath都試過不行,

包括下載插件katalon recorder 錄制的腳本不行,又下載BlazeMeter,錄制的腳本還是不行。

 

—— 到最后,才發現這個元素是動態屬性,它的爸爸,爸爸的爸爸,爸爸的爸爸的爸爸……也都是動態屬性的,往上追了很多代才找到一個固定屬性的id,

還是用xpath定位的。

把代碼貼出來,供大家參考。【xpath定位元素:外面單引號,里面雙引號】

e2='//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[3]/div[1]/div[2]/input'
driver.find_element_by_xpath(e2).send_keys(r'C:\Users\stonmy\Desktop\UI\fla.jpg') #點擊添加附件 並上傳圖片

 

ps:元素定位不到的情況,首先想要用多種方式來嘗試定位--查看是否有iframe、是否有動態屬性的原色--借助插件錄制腳本。

遇到類似場景:一定要一層一層往上追蹤,不要嫌麻煩。

如果你有更好的方法,也可以分享一下。

 

import time

from selenium import webdriver


driver = webdriver.Chrome()
driver.get('https://mail.163.com/')
driver.maximize_window()

driver.implicitly_wait(10)
driver.find_element_by_id('lbNormal').click()

driver.implicitly_wait(10)
driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe'))
driver.implicitly_wait(10)
driver.find_element_by_name('email').send_keys('13923830000')
driver.find_element_by_name('password').send_keys('mima') #輸入正確的密碼
driver.find_element_by_id('dologin').click()

driver.implicitly_wait(50)
h = driver.current_window_handle
driver.switch_to.window(h)
driver.implicitly_wait(40)
driver.find_element_by_id('_mail_component_19_19').click() #點擊首頁的寫信按鈕


driver.implicitly_wait(50)
h1 = driver.current_window_handle
driver.switch_to.window(h1)
driver.implicitly_wait(40)

# 輸入對方郵箱地址和郵件內容
driver.find_element_by_class_name('nui-editableAddr-ipt').send_keys('120221363@qq.com') #輸入收件人
driver.implicitly_wait(40)
e1='//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[2]/div[1]/div/div/input'
driver.find_element_by_xpath(e1).send_keys('春天來了') #輸入主題

driver.switch_to.frame(driver.find_element_by_class_name('APP-editor-iframe'))
driver.find_element_by_class_name('nui-scroll').send_keys('石頭記,一部經典著作。值得看了一遍又一遍!')
driver.switch_to.default_content() #退出富文本的iframe
driver.implicitly_wait(50)

e2='//*[@id="_dvModuleContainer_compose.ComposeModule_0"]/div[1]/section/header/div[3]/div[1]/div[2]/input'
driver.find_element_by_xpath(e2).send_keys(r'C:\Users\stonmy\Desktop\UI\fla.jpg') #點擊添加附件 並上傳圖片


driver.find_element_by_class_name('nui-toolbar-item').click() #點擊發送按鈕
driver.implicitly_wait(20)

# driver.find_element_by_id('_mail_button_10_229').click() #不輸入主題時的彈窗確認
time.sleep(3)
driver.quit()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM