selenium学习教程之定位以及切换frame(iframe)

  • Post category:Python

Selenium学习教程之定位以及切换frame(iframe)攻略

在Selenium中,我们使用它提供的一些定位技术来查找页面上的元素。其中最基本的就是使用CSS选择器以及XPath表达式来定位元素。

使用CSS选择器定位元素

我们可以通过在浏览器的开发者工具中使用querySelectorquerySelectorAll方法来获取CSS选择器。

以下是使用CSS选择器定位元素的示例代码:

from selenium import webdriver

# 启动浏览器
driver = webdriver.Chrome()

# 打开页面
driver.get('http://www.baidu.com')

# 通过CSS选择器定位元素
element = driver.find_element_by_css_selector('#kw')

# 输入关键字
element.send_keys("Selenium")

# 点击搜索按钮
btn = driver.find_element_by_css_selector('#su')
btn.click()

# 关闭浏览器
driver.quit()

在上面的示例代码中,我们打开了百度的首页,通过find_element_by_css_selector方法使用CSS选择器来定位搜索框元素和搜索按钮元素。然后输入关键字并点击搜索按钮。最后关闭浏览器。

使用XPath表达式定位元素

XPath是一种用于定位XML文档中元素的语言,也可以用于定位HTML文档中的元素。使用XPath表达式来查找元素的方式类似于CSS选择器,但是XPath具有更多的功能。

以下是使用XPath表达式定位元素的示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动浏览器
driver = webdriver.Chrome()

# 打开页面
driver.get('http://www.baidu.com')

# 通过XPath表达式定位元素
element = driver.find_element(By.XPATH, '//input[@id="kw"]')

# 输入关键字
element.send_keys("Selenium")

# 点击搜索按钮
btn = driver.find_element(By.XPATH, '//input[@type="submit"]')
btn.click()

# 关闭浏览器
driver.quit()

在上面的示例代码中,我们打开了百度的首页,通过find_element方法使用XPath表达式来定位搜索框元素和搜索按钮元素。然后输入关键字并点击搜索按钮。最后关闭浏览器。

切换frame(iframe)

如果页面中包含了iframe标签,则必须先切换到iframe所在的窗口才能对其中的元素进行操作。

以下是切换frame(iframe)的示例代码:

from selenium import webdriver

# 启动浏览器
driver = webdriver.Chrome()

# 打开页面
driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

# 切换到iframe窗口
frame = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(frame)

# 操作iframe中的元素
element1 = driver.find_element_by_id('draggable')
element2 = driver.find_element_by_id('droppable')
webdriver.ActionChains(driver).drag_and_drop(element1, element2).perform()

# 切换回原始窗口
driver.switch_to.default_content()

# 关闭浏览器
driver.quit()

在上面的示例代码中,我们打开了一个包含iframe的页面,通过find_element_by_tag_name方法找到iframe,并使用switch_to.frame方法切换到iframe窗口。然后在iframe中操作其中的元素。最后使用switch_to.default_content方法切换回原始窗口并关闭浏览器。

总结:

本文中我详细讲解了使用CSS选择器和XPath表达式定位元素的方法,并给出了具体的示例代码。同时还介绍了如何切换到iframe窗口并操作其中的元素。