python自动化面试题(二)

154 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

1.     如何使用xpath进行元素定位

XPATH既可以绝对定位,也可以直接定位。但我们一般不使用绝对定位,因为只要前端页面发生变化,XPATH就失效了。相对定位使用 //标签 来表示,可以相对位置后再相对位置。例如://p//input

也可以使用索引定位,即在相对位置的标签后面加入[1]。例如//input[1]

还可以使用属性定位,即在相对位置的标签后面加入[@属性名称=值],例如//input[@name=’pwd’]

XPATH可以通过页面元素查找后直接复制XPATH路径,同时也可以手写XPATH。当XPATH路径超过3级时,会考虑进行XPATH路径的优化,结合相对路径,索引和属性定位来优化XPATH路径。

2.     Selenium()可以进行哪些元素操作

Selenium除了可以进行鼠标点击(click)操作和键盘输入(send_keys)之外,还可以进行鼠标的double_click 双击操作,context_click 右键操作,drag_and_drop 拖拽操作,move_to_element()  鼠标悬停。它的操作方式需要引入ActionChains模块,通过ActionChains确定要操作哪个浏览器对象,接操作方式,然后通过perform保持状态。代码为:ActionChains(driver).move_to_element(ele).perform()

如果是键盘操作,除了可以send_keys外还可以进行clear清空。我们在键盘操作的时候,引入Keys模块进行快捷键操作。driver.find_element(By.ID,'kw').send_keys(Keys.CONTROL,'a')

3.     Selenium上传文件和截图操作

Selenium提供了上传文件操作,我们只需要把文件看成是一个特殊的数据,就和常规输入差不多了。driver.find_element (By.ID,'upload-pic').send_keys('E:\shuijing.png'),在元素查找的时候定位到文件上传的元素,send_keys中填写文件的路径,需要确保文件存在。

截图操作使用get_screenshot_as_file即可完成,代码为:d.get_screenshot_as_file(f'D:\ \baidu.png'),如果需要保存的截图每次都不同,可以使用time模块获取时间戳作为截图名称。

4.     Selenium还有哪些元素操作

Selenium还可以进行下拉框操作,首先我们需要导入Select,然后再使用定位的option的方法即可完成下拉框的操作。ele = driver.find_element(By.NAME,'cars'),Select(ele).select_by_index(0),除了index还有by_value,by_visible_text。

还有单选框,复选框。只需要找到对应的元素,click即可。

弹框的处理:在处理弹框的时候,需要先切换到弹框再进行相应的处理,alert = driver.switch_to.alert,然后再alert.accept(),alert.dismiss()等操作。

frame的处理:如果网页中使用了frame,同样也需要先切入到frame中再进行元素操作。switch_to.frame(元素对象)

5.     自动化测试的时候如果定位不到元素怎么办()

如果定位不到元素,要么就是定位的方式找不到元素,可以更换元素定位方式。例如使用XPATH进行元素定位,也可以考虑采用其他的元素定位方式,如:css selector,CLASS_NAME等。

也可能是因为元素没有被加载出来,那我们需要加入等待时间。可以使用sleep(),隐式等待implicitly_wait(),显示等待WebDriverWait,等到元素被加载出来就可以找到元素了。