selenium动手
【摘要】 Firefox DevTools,2017年Firebug插件的功能全部集成到了前者。python -m pydoc -p8888 浏览器查看API文档 --我也不理解为什么6666就不安全了?当然,在IDE里的提示查看起来更方便在selenium启动的chrome浏览器里:console.log(navigator) # or window.navigator.webdriver借助于we...
Firefox DevTools,2017年Firebug插件的功能全部集成到了前者。
python -m pydoc -p8888 浏览器查看API文档 --我也不理解为什么6666就不安全了?
当然,在IDE里的提示查看起来更方便
在selenium启动的chrome浏览器里:
console.log(navigator) # or window.navigator.webdriver
借助于webdriver的execute_cdp_cmd
方法,可以执行Chrome Devtools Protocol command,这个命令可以抢占先机,在页面上的js执行之前执行。从而将上图中的webdriver变成undefined.
我们打开了某个页面,以为初始页面加载完成就可以操作了,结果出现元素找不到的情况。很有可能该页面向服务器发出来了ajax请求,而该请求并没有完成,元素还未正常显示。
python的time模块的sleep是帮助我们观察或调试脚本运行,不应依赖它做等待。
driver.implicitly_wait
(10)简直太好用了,并且简单。
这对于某些因为环境原因导致的元素偶尔找不到的问题非常好用。但是也要看它的缺点:
- 对于检测某些内容不存在的情况呢?完啦巴比叩啦
- 要等待整个页面加载完成(浏览器转圈停止),如果包含很多JS和图片呢?
- 干扰显性等待。混合使用显性等待和隐性等待会导致意想不到的后果(官方说法)。
当然建议是用显性等待,不过麻烦呀。
driver=webdriver.Chrome()
简单粗暴的在PATH里查找chromedriver.exe并运行起来,如果没有的话就报错
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home
看版本:pip show selenium
点击页面上的超链接打开了一个新窗口或新标签,并且新窗口或新标签处于当前可操作的页面。人是知道的,看到的;但是webdriver并不知道哪个窗口处于当前可操作的状态。
使用到的方法:
webdriver.ChromeOptions()
options.add_experimental_option()
webdriver.Chrome()
driver.execute_cdp_cmd()
driver.implicitly_wait()
driver.maximize_window()
driver.get()
driver.current_window_handle
driver.find_element()
By.CSS_SELECTOR
title.is_displayed
title.click
random.randint()
driver.window_handles
driver.switch_to.window()
driver.close()
driver.quit()
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)