面试常见问题:元素定位不到可能的原因

1、定位语句不对

2、是否加等待

3、元素嵌套在iframe/frame元素标签中(切换frame) 多层嵌套frame/iframe

快捷方法:搜索//iframe

4、要定位的元素非当前窗口(切换句柄)

5、其他

一、弹窗处理

driver.switch_to.alert

  1. import time
  2. from selenium.webdriver.common.by import By
  3. from selenium import webdriver
  4. driver=webdriver.Chrome()
  5. driver.get(r"C:\Users\xingyao\Desktop\test.html")
  6. el=driver.find_element(By.ID,"1")
  7. time.sleep(2)
  8. el.click()
  9. # 弹窗进行处理
  10. alert=driver.switch_to.alert
  11. print(alert.text)
  12. # 点击确认
  13. # alert.accept()
  14. time.sleep(2)
  15. driver.close()

二、下拉框操作
  1. """
  2. 实现下拉框的操作
  3. from selenium.webdriver.support.select import Select
  4. """
  5. from selenium.webdriver.support.select import Select
  6. import time
  7. from selenium.webdriver.common.by import By
  8. from selenium import webdriver
  9. driver=webdriver.Chrome()
  10. driver.get(r"C:\Users\xingyao\Desktop\test.html")
  11. # 定位下拉框
  12. el1=driver.find_element(By.ID,"banji")
  13. select=Select(el1)
  14. # 展示下拉框所有选项内容显示
  15. print("展示下拉框所有选项内容",select.options)
  16. time.sleep(2)
  17. # 实现选择下拉框选项选择 有三种方式 索引 value 选项内容
  18. select.select_by_index(1)
  19. time.sleep(2)
  20. select.select_by_value("22")
  21. time.sleep(2)
  22. select.select_by_visible_text("全栈VIP23期")
  23. time.sleep(2)
  24. driver.close()

三、键盘操作
  1. """
  2. 键盘操作
  3. """
  4. import time
  5. from selenium import webdriver
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.common.keys import Keys
  8. driver=webdriver.Chrome()
  9. driver.get("https://www.baidu.com")
  10. driver.find_element(By.ID,"kw").send_keys("码尚教育")
  11. time.sleep(2)
  12. # ctrl+a
  13. driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'a')
  14. # ctrl+c
  15. driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'c')
  16. # ctrl+x
  17. driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'x')
  18. driver.find_element(By.ID,"kw").clear()
  19. time.sleep(2)
  20. # ctrl+v
  21. driver.find_element(By.ID,"kw").send_keys(Keys.CONTROL,'v')
  22. time.sleep(2)
  23. driver.close()

四、鼠标操作
  1. """
  2. 鼠标操作
  3. ActionChains 动作链
  4. 可以把多个鼠标操作按照顺序连贯的统一执行
  5. """
  6. from selenium.webdriver import ActionChains
  7. import time
  8. from selenium.webdriver.common.by import By
  9. from selenium import webdriver
  10. driver=webdriver.Chrome()
  11. driver.get("https://www.baidu.com")
  12. driver.maximize_window()
  13. time.sleep(2)
  14. el_set=driver.find_element(By.ID,"s‐usersetting‐top")
  15. # ActionChains(driver).move_to_element(el_set).perform()
  16. # 第二种写法
  17. actions=ActionChains(driver)
  18. actions.move_to_element(el_set)
  19. actions.perform()
  20. time.sleep(1)
  21. el_gjselect=driver.find_element(By.LINK_TEXT,"高级搜索")
  22. el_gjselect.click()
  23. time.sleep(2)
  24. driver.close()
  25. """
  26. ActionChains 常用的鼠标操作方法
  27. 鼠标常用操作:
  28. 滑块操作
  29. click_and_hold 点击鼠标左键不松开
  30. context_click 鼠标右击
  31. double_click 双击
  32. drag_and_drop 从一个元素拖到鼠标到另外一个元素
  33. drag_and_drop_by_offset 拖到某个坐标松开
  34. move_by_offset 鼠标从当前位置移动到某个坐标
  35. move_to_element
  36. move_to_element_with_offset 移动到距某个元素(左上角坐标)多少距离的位置
  37. pause 停留
  38. release 释放鼠标
  39. """

作业:

基于selenium实现对项目 :后台登录-商品管理-检索商品名称
项目后台地址:
http://47.107.116.139/shopnc/admin/index.php?act=login&op=login
用户名:admin 密码:msadmin