1、本次腳本編寫的目的:新建一個實驗記錄的步驟、步驟內容並提交
2.步驟標題的定位方法照舊:
#步驟標題---目的1的代碼
bzbt = self.browser.find_element_by_xpath('//*[@id="pane-step"]/div/section/div[1]/div/div[2]/form/div[1]/div/div/input')
bzbt.click()
time.sleep(2)
bzbt.send_keys('lwy的自動化實驗步驟標題:20200902')
time.sleep(3)
3、步驟內容的源代碼如下,可以看到元素是嵌套在iframe中的,且iframe的id是動態的。
百度最有價值的參考鏈接:https://www.jianshu.com/p/5af3974c40c7
根據部分元素屬性定位
xpath中提供了三個非常好的方法來為我們定位部分屬性值:
- driver.find_element_by_xpath ("//div[contains(@id, ‘btn-attention’)]") ------contains(a, b) 如果a中含有字符串b,則返回true,否則返回false
- driver.find_element_by_xpath ("//div[starts-with(@id, ‘btn-attention’)]") -----starts-with(a, b) 如果a是以字符串b開頭,返回true,否則返回false
- driver.find_element_by_xpath ("//div[ends-with(@id, ‘btn-attention’)]") ----- ends-with(a, b) 如果a是以字符串b結尾,返回true,否則返回false
#這個需要結尾是‘btn-attention’
參考上面的經驗,總結出目的2的代碼如下:
#定位步驟內容的iframe的框架中的元素(先定位到框架)
#iframe的xpath為//*[@id="vue-tinymce-159909748361216_ifr"]
首先需要定位到 iframe 元素,當iframe 的 id是動態時,用(starts-with(a, b) 如果a是以字符串b開頭,返回true,否則返回false)
iframe = self.browser.switch_to.frame(self.browser.find_element_by_xpath("//iframe[starts-with(@id,'vue-tinymce')]"))----我的代碼,通過打印消息發現定位是成功的
#driver.switch_to.frame(driver.find_element_by_xpath("//iframe[starts-with(@id, 'x-URS-iframe')]"))---參考別人的代碼
#定位步驟內容的輸入框(再定位到元素)

bznr = self.browser.find_element_by_xpath('//*[@id="tinymce"]/p')
time.sleep(3)
bznr.click()
print('lwy1111111111')
time.sleep(2)
#bznr.send_keys('lwy的自動化測試步驟內容是:lwy你真棒')---這一步這樣寫不知道為什么不行,沒找到原因,也不深究了
self.browser.find_element_by_id('tinymce').send_keys('lwy的自動化測試步驟內容是:lwy你真棒')
4、目的3--提交
所以,需要先退出irfame
#退出iframe(因為提交這個按鈕的元素已經不在iframe框架中)
exitframe = self.browser.switch_to.default_content()
time.sleep(1)
#提交--目的3完成
submitt1 = self.browser.find_element_by_xpath('//*[@id="pane-step"]/div/section/div[1]/div/div[3]/div/button[2]/span').click()
最終的效果是
真棒,簡直是完美!!哈哈