1.2 把下载好的放到Python安装目录下,下载方法
二、启动浏览器
2.1 普通启动方式
#!/usr/bin/python3
# encoding:utf‐8
from selenium import webdriver
#启动Firefox浏览器
#browser = webdriver.Firefox()
#启动IE浏览器
#browser = webdriver.Ie()
#启动Chrome浏览器
#指定驱动方式启动:webdriver.Chrome(executable_path="D://") browser = webdriver.Chrome()
<("www.baidu")
2.2 Headless启动方式
说明:浏览器的无界面形态,无需打开浏览器即可运行,此种方式只chrome60+版本#!/usr/bin/python3
# encoding:utf‐8
from selenium import webdriver
chrome_hless = webdriver.ChromeOptions()
# 使用headless无界面浏览器模式
chrome_hless.add_argument('‐‐headless')
chrome_hless.add_argument('‐‐disable‐gpu')
# 启动浏览器,获取网页源代码
browser = webdriver.Chrome(chrome_options=chrome_hless)
mainUrl = "www.baidu/"
<(mainUrl)
print(browser.title)
browser.quit()
'''
运行之后结果打印百度标题:
百度一下,你就知道
'''
三、元素定位
元素定位方法
id find_element_by_id()
name find_element_by_name()
class find_element_by_class_name()
link_text find_element_by_link_text("全部文字匹配") partial_link_text find_element_by_partial_link_text("部分文字匹配") tag find_element_by_tag_name()
xpath find_element_by_xpath()
css find_element_by_css_selector()
详见Python + Selenium 元素定位详细
四、selenium三种等待方式
4.1 强制等待
固定等待XX秒时长
from selenium import webdriver
import time
time.sleep(3)
4.2 隐性等待
设置最长等待时长XX秒:
第一种情况:最长等待时长内浏览器一旦加载完成,直接进行下一步操作
第二种情况:超出设置最长等待时长,再进行下一步操作
# 浏览器加载完成,即进行下一步操作,如果10秒钟还未加载完成,也进行下一步操作
driver.implicitly_wait(10)
4.3 显性等待
WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。它主
要的意思就是:程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
wait模块的WebDriverWait类是显性等待类,先看下它有哪些参数与方法:
selenium.webdriver.support.wait.WebDriverWait(类) init
driver: 传入WebDriver实例,即我们上例中的driver
timeout: 超时时间,等待的最长时间(同时要考虑隐性等待时间)
poll_frequency: 调用until或until_not中的方法的间隔时间,默认是0.5秒
ignored_exceptions: 忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常,则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有
NoSuchElementException。
until
method: 在等待期间,每隔一段时间(__init__中的poll_frequency)调用这个传入的方法,直到返回
值不是False
message: 如果超时,抛出TimeoutException,将message传入异常
until_not
与until相反,until是当某元素出现或什么条件成立则继续执行,
until_not是当某元素消失或什么条件不成立则继续执行,参数也相同,不再赘述。
具如下
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
特别注意的是until或until_not中的可执行方法method参数,很多人传入了WebElement对象,如下:
WebDriverWait(driver, 10).until(driver.find_element_by_id('kw')) # 错误
这是错误的用法,这里的参数一定要是可以调用的,即这个对象一定有 call() 方法,否则会抛出异常:
TypeError: 'xxx' object is not callable 在这里,你可以用selenium提供的
expected_conditions 模块中的各种条件,也可以用WebElement的 is_displayed() 、
is_enabled()、**is_selected() **方法,或者用自己封装的方法都可以
WebDriverWait 常用方法表
对象动作
title_is判断当前页面的title是否完全匹配
对象动作
title_contains判断当前页面的title是否包含预期字符串
presence_of_el
ement_located
判断某个元素是否被加到了dom树里,并不代表该元素一定可见
visibility_of_el ement_located 判断某个元素是否可见.可见代表元素非隐藏,并且元素的宽和高都不等于0
visibility_of跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了
presence_of_al l_elements_loc ated 判断是否至少有1个元素存在于dom树中。举个例子,如果页面上有n个元素的class都是'column-md-3',那么只要有1个元素存在,这个方法就返回True
text_to_be_pre
sent_in_eleme
nt
判断某个元素中的text是否包含了预期的字符串
text_to_be_pre
sent_in_eleme
nt_value
判断某个元素中的value属性是否包含了预期的字符串
frame_to_be_a vailable_and_s witch_to_it 判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False
invisibility_of_
element_locat
ed
判断某个元素中是否不存在于dom树或不可见
element_to_be _clickable 判断某个元素中是否可见并且是enable的,这样的话才叫clicka ble
staleness_of等某个元素从dom树中移除,注意,这个方法也是返回True或F alse
element_to_be
_selected
判断某个元素是否被选中了,一般用在下拉列表
selenium怎么使用element_select
ion_state_to_b
e
判断某个元素的选中状态是否符合预期
element_locat ed_selection_s tate_to_be 跟上面的方法作用一样,只是上面的方法传入定位到的elemen t,而这个方法传入locator
alert_is_presen
t
判断页面上是否存在alert
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论