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("文件路径")