selenium + python自動化測試unittest框架學習(三)webdriver對頁面其他控件操作(三)
1.對話框,下拉框
(1)對話框的有兩種,一種是iframe格式的,需要switch_to_iframe()進行定位,現在大部分的對話框是div格式的,這種格式的可以通過層級定位來定位元素,先定位對話框的div,然後再對對話框的元素進行定位。
(2)另外的彈出消息提示框有三種類型:alert,comfirm,prompt,三種類型的區別為;
alert消息提示框僅提供“確定”按鈕,用於警告等提示,comfirm提示框提供“是”和“否”的選擇,prompt則是提示輸入對話框,包含提示信息,輸入文本框以及“確定”和“取消”按鈕
這幾種消息提示框一般都是調用javascript來顯示的,所以如何定位這些對話框裏的元素?
使用switch_to_alert定位彈出框,對於彈出框的主要操作有;
text:獲取文本值
accept() :點擊"確認"
dismiss() :點擊"取消"或者叉掉對話框
send_keys() :輸入文本值 ,該操作對於有輸入文本框的prompt有效
alert = driver.switch_to_alert() #定位到彈出框 print(alert.text) #獲取彈出框提示信息 alert.send_keys("my name is xiaoming") #對於prompt的彈出框,在文本框中輸入內容 alert.accept() #點擊確定,或者alert.dismiss(),點擊取消
下拉框定位:
(1)下拉列表<select>標簽的,可以使用Select(driver.find_element_by_xxx(select元素定位)).select_by_xxx(列表項定位)來定位
<select name="s1"> <option value="1" title="option1" >1</option> <option value="2" title="option2" >2</option> <option value="3" title="option3">3</option> <option value="4" title="option4" >4</option> <option value="5" title="option5" >5</option> <option value="6" title="option6" >6</option> <option value="7" title="option7" >7</option> <option value="8" title="option8" >8</option> <option value="9" title="option9" >9</option> <option value="10" title="option10" >10</option> </select>
定位某一列的方式有以下方式,例如定位列表項1
select_by_value(),Select(driver.find_element_by_name("s1")).select_by_value("1")
select_by_index(),Select(driver.find_element_by_name("s1")).select_by_index(1)
select_by_visible_text() # 通過選項文字進行選擇,Select(driver.find_element_by_name("s1")).select_by_visible_tex("1")
(2)下拉列表不是select標簽,而是ul>li,則可以通過xpath或者css來定位列表項,先定位下拉菜單ul,再定位具體的列表項li。例如定位列表項的最後一項
<ul name="u1"> <li value="1" title="1" >1</lin> <li value="2" title="2" >2</lin> <li value="3" title="3" >3</lin> <li value="4" title="4" >4</lin> <li value="5" title="5" >5</lin> </ul>
定位最後一項的xpath定位方式:/ul/li[last()] 選取屬於ul 子元素li的最後一個 book 元素。
driver.find_element_by_xpath("/ul/li[last()]")
3.上傳
上傳文件:定位上傳文件的文本框類似輸入文本框內容將文件的絕對路徑輸入send_keys("文件路徑")
send_keys("文件路徑")
selenium + python自動化測試unittest框架學習(三)webdriver對頁面其他控件操作(三)