2,导航与页面交互
启动关闭浏览器
关闭浏览器有两种方式:
close方法
quit方法
close方法关闭当前的浏览器窗口,quit方法不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接
获取网页源码
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
print(browser.page_source)#browser.page_source是获取网页的全部html
browser.close()
一些方法
##浏览器对象的方法
from selenium import webdriver
driver = webdriver.Chrome()
driver.add_cookie(
driver.find_element_by_css_selector(
driver.get_log(
driver.session_id
driver.application_cache
driver.find_element_by_id(
driver.get_network_conditions(
driver.set_network_conditions(
driver.back(
driver.find_element_by_link_text(
driver.get_screenshot_as_base64(
driver.set_page_load_timeout(
driver.capabilities
driver.find_element_by_name(
driver.get_screenshot_as_file(
driver.set_script_timeout(
driver.close(
driver.find_element_by_partial_link_text(
driver.get_screenshot_as_png(
driver.set_window_position(
driver.command_executor
driver.find_element_by_tag_name(
driver.get_window_position(
driver.set_window_rect(
driver.create_options(
driver.find_element_by_xpath(
driver.get_window_rect(
driver.set_window_size(
driver.create_web_element(
driver.find_elements(
driver.get_window_size(
driver.start_client(
driver.current_url
driver.find_elements_by_class_name(
driver.implicitly_wait(
driver.start_session(
driver.current_window_handle
driver.find_elements_by_css_selector(
driver.launch_app(
driver.stop_client(
driver.delete_all_cookies(
driver.find_elements_by_id(
driver.log_types
driver.switch_to
driver.delete_cookie(
driver.find_elements_by_link_text(
driver.maximize_window(
driver.switch_to_active_element(
driver.desired_capabilities
driver.find_elements_by_name(
driver.minimize_window(
driver.switch_to_alert(
driver.error_handler
driver.find_elements_by_partial_link_text(
driver.mobile
driver.switch_to_default_content(
driver.execute(
driver.find_elements_by_tag_name(
driver.name
driver.switch_to_frame(
driver.execute_async_script(
driver.find_elements_by_xpath(
driver.orientation
driver.switch_to_window(
driver.execute_script(
driver.forward(
driver.page_source
driver.title
driver.file_detector
driver.fullscreen_window(
driver.quit(
driver.w3c
driver.file_detector_context(
driver.get(
driver.refresh(
driver.window_handles
driver.find_element(
driver.get_cookie(
driver.save_screenshot(
driver.find_element_by_class_name(
driver.get_cookies(
driver.service
导航
通过调用get 方法,导航到一个url
browser.get('https://www.taobao.com')
WebDriver将等待页面完全加载(即,触发了onload事件),然后再将控制权返回给测试或脚本。 值得注意的是,如果您的页面在加载时使用了很多AJAX,则WebDriver可能不知道何时完全加载。 如果需要确保此类页面已完全加载,则可以使用等待。
和页面交互
查找元素
示例html
<input type="text" name="passwd" id="passwd-id" />
找到该元素的方法:
element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")
向输入框内输入字符:
element.send_keys("some text")
模拟点击下拉箭头:
element.send_keys(" and some", Keys.ARROW_DOWN)
清空输入框:
element.clear()
填充输入表格
高效处理SELECT 元素的方式
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)
WebDriver还提供用于取消选择所有选定选项的功能
select = Select(driver.find_element_by_id('id'))
select.deselect_all()
我们需要所有默认选定选项的列表,Select类提供了一个返回列表的属性方法
select = Select(driver.find_element_by_xpath("//select[@name='name']"))
all_selected_options = select.all_selected_options
获取所有可用选项
options = select.options
填充表格后进行提交
WebDriver在每个元素上都具有便捷的方法“提交”。 如果在表单中的元素上调用此方法,则WebDriver将在DOM上移动,直到找到封闭的表单,然后在该表单上调用Submit。 如果元素不在表单中,则将引发NoSuchElementException
element.submit()
拖拉元素
element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")
from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()
在窗口和框架之间移动