屏幕截图
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('screenshot.png')
driver.quit()
如何向下滚动到页面底部
您可以使用execute_script方法在加载的页面上执行javascript。因此,您可以调用JavaScript API滚动到页面的底部或任何其他位置。
下面是滚动到页面底部的示例:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
cookies操作
在我们离开这些下一步之前,您可能有兴趣了解如何使用cookie。首先,您需要位于Cookie对其有效的域上:
#Go to the correct domain
driver.get("http://www.example.com")
#Now set the cookie. This one's valid for the entire domain
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_cookie(cookie)
#And now output all the available cookies for the current URL
driver.get_cookies()
delete_all_cookies()
删除会话范围内的所有cookie。
用法: driver.delete_all_cookies()
delete_cookie(名称)
删除具有给定名称的单个cookie。
填写表格
我们已经看到了如何在文本区域或文本字段中输入文本,但是其他元素呢?您可以“切换”下拉菜单的状态,也可以使用“ setSelected”来设置类似 所选OPTION标签的内容。处理SELECT标记还不错:
element = driver.find_element_by_xpath("//select[@name='name']")
all_options = element.find_elements_by_tag_name("option")
for option in all_options:
print("Value is: %s" % option.get_attribute("value"))
option.click()
这将在页面上找到第一个“ SELECT”元素,并依次循环浏览每个OPTION,打印出它们的值,然后依次选择每个OPTION。
如您所见,这不是处理SELECT元素的最有效方法。WebDriver的支持类包括一个称为“选择”的类,它提供了与这些类交互的有用方法:
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中取消选择所有OPTION。
假设在测试中,我们需要所有默认选定选项的列表,Select类提供了一个返回列表的属性方法:
select = Select(driver.find_element_by_xpath("//select[@name='name']"))
all_selected_options = select.all_selected_options
要获取所有可用选项:
options = select.options
填写完表格后,您可能要提交。一种方法是找到“提交”按钮并单击它:
Assume the button has the ID "submit" :)
driver.find_element_by_id("submit").click()
另外,WebDriver在每个元素上都具有便捷的方法“提交”。如果在表单中的元素上调用此方法,则WebDriver将在DOM上移动,直到找到封闭的表单,然后在该表单上调用Submit。如果元素不是表单,则将 NoSuchElementException引发:
element.submit()
切换页面
driver.execute_script("window.open('"+url+"')")
driver.switch_to_window(driver.window_handles[1])