目录

弹窗

警告弹窗+确认弹窗

提示弹窗

等待

强制等待

隐式等待

显示等待

浏览器导航操作

文件上传

浏览器参数设置

设置无/有头模式

页面加载策略


只有认知的突破💫才能带来真正的成长💫编程技术的学习💫没有捷径💫一起加油💫 

🍁感谢各位的观看🍁欢迎大家留言🍁咱们一起加油🍁努力成为更好的自己🍁

弹窗

弹窗这个元素,是无法通过元素定位的,它需要用到seleinum里面提供alert接口

警告弹窗+确认弹窗

#找到对应的弹窗元素

alert = driver. switchTo.alert

#确认

alert.accept()

#取消

alert.dismiss()
提示弹窗

alert = driver. switchTo.alert 
alert.send_keys("hello") 
alert.accept() 
alert.dismiss
等待

代码执行的速度要比浏览器渲染速度快,如果不等待的话,就会出现代码执行完了,元素还没加载出来,就会出现找不到元素的报错。

强制等待

time.sleep(秒数):当代码执行到这句代码的时候,就会阻塞住,直到时间到,才会继续往后执行代码。但是,这种等待得效率较低,浪费时间。

隐式等待

implicitly_wait(秒数):这个等待函数,一次设置作用于全局。每次查找元素的时候,它会在你设置得时间里,不断得查找元素是否加载好了,发现元素加载好后,就会继续往后执行代码。如果,在超出指定的时间还未找到元素,就会报错终止代码的执行。

#隐式等待5秒 
driver.implicitly_wait(5)
显示等待

显示等待不会作用于全局,等待哪个元素,就要对其单独设置等待。它的工作原理和隐式等待一样。

  • WebDriverWait(driver, sec).until(functions)

  • functions:涉及到selenium.support.ui.ExpectedConditions包下的ExpectedConditions类,==等待的元素。

from selenium.webdriver.support import expected_conditions as EC #太长了就相当#于typdef成EC wait = WebDriverWait(driver,2) wait.until(EC.invisibility_of_element((By.XPATH,'//[@id="2"]/div/div/div[3]/dv[1]/div[1]/div')))
浏览器导航操作
  • driver.get("url"):访问网页。

  • driver.back() :浏览器的后退。

  • driver.forward() :浏览器的前进。

  • driver.refresh():浏览器的刷新。

文件上传
  • 文件的上传,也是先获取该文件的路径,然后,点击提交,才能真正意义上的文件上传。所以,我们可以直接选择对应的元素,然后,把该文件的路径send_keys,最后点击上传。

  • 点击文件上传的场景下会弹窗系统窗口,进行文件的选择。selenium 无法识别非 web 的控件,上传文件窗口为系统自带,无法识别窗口元素。但是,可以使用 sendkeys 来上传指定路径的文件,达到的效果是一样的。

driver.get("file:///D:/file/%E6%AF%94%E7%89%B9%E6%95%99%E5%8A%A1/%E6%B5%8B%E8%A F%95/selenium4html/selenium-html/upload.html") ele = driver.find_element(By.CSS_SELECTOR,"body > div > div > input[type=file]") ele.send_keys("D:\\file\\test.txt")
  • tips:send_keys不但可以输入信息,还可以输入文件路径。

浏览器参数设置
设置无/有头模式
options = webdriver.EdgeOptions() #创建一个options选项类对象 options.add_argument("-headless") #然后通过add_argument函数配相应的参数 
driver = webdriver.Edge(service=Service(edge),options=options)
  • 无头模式:代码执行的时候,是在后台运行的,不会显示执行的界面。

  • 有头模式:不配置无头模式,就是默认有头模式,它会显示执行的过程。

页面加载策略

options.page_load_strategy = '加载⽅式' ,页面加载⽅式主要有三种类型:

  • normal:默认值,等待所有资源下载。

  • eager:页面整体的框架已准备就绪,但诸如图像的其他资源可能仍在加载。

  • none:完全不会阻塞WebDriver。

  • options = webdriver.EdgeOptions()
     options.page_load_strategy = 'eager' 
    driver = webdriver.Edge(service=Service(edge),options=options)

总结:normal等待所有的资源加载完成,eager等待页面的整体骨架加载完成就OK了,none不管你丫的是否加载完,直接不等待。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐