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

 

posted @ 2017-08-20 17:06  鱼的记忆只有七秒  阅读(568)  评论(0编辑  收藏  举报