Python脚本Selenium及页面Web元素定位详解

yizhihongxing

Python脚本Selenium及页面Web元素定位详解

什么是Selenium?

Selenium是一款常用的Web应用程序测试框架,可以通过自动化的方式进行Web UI测试。Selenium支持多种程序语言,包括Python、Java等,它能够模拟浏览器的运行行为,方便进行测试的效果检查。Selenium在自动化网页测试及Web Scraping方面都有广泛应用。

如何安装Selenium?

Python实现Selenium主要需要安装Selenium和WebDriver两个模块。使用pip安装即可:

pip install selenium

WebDriver需要根据使用的浏览器类型在官网下载相应的驱动程序。比如,Google Chrome浏览器的WebDriver下载链接为https://sites.google.com/chromium.org/driver/downloads。

如何使用Selenium?

1.创建浏览器引擎对象

使用Selenium首先需要创建一个浏览器引擎对象,这可以通过如下代码完成:

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

其中Chrome对应的是要使用的浏览器类型,executable_path对应的是浏览器的驱动程序路径。如果已经将执行路径添加到环境变量中,就可以省略executable_path参数。

2.打开网址并操作Web元素

通过以上方式创建好浏览器引擎对象后,就可以使用Selenium对指定的Web页面进行自动化操作。我们可以使用driver.get(url)方法打开一个新的页面,然后使用find_element_by_*等方法查找页面上的Web元素。

假设我们需要访问搜索引擎Google,并搜索Python,以下是使用Selenium实现的示例代码:

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://www.google.com')
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')
search_box.submit()

其中,find_element_by_name()方法通过页面元素的name属性定位元素,send_keys()方法对元素进行输入操作,submit()方法提交表单。以上代码实现了打开Google,输入Python关键字并进行搜索的过程。

3.定位Web元素

如何准确地定位页面上的Web元素?可以通过以下方式定位:

  • find_element_by_id(id)
  • find_element_by_name(name)
  • find_element_by_xpath(xpath)
  • find_element_by_link_text(link_text)
  • find_element_by_partial_link_text(partial_link_text)
  • find_element_by_tag_name(tag_name)
  • find_element_by_class_name(class_name)
  • find_element_by_css_selector(css_selector)

以百度首页为例,以下是通过Selenium查找百度搜索条目的代码示例:

from selenium import webdriver

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://www.baidu.com')
search_box = driver.find_element_by_id('kw')
search_box.send_keys('Python')
search_box.submit()

其中,find_element_by_id()方法根据元素的id属性确定元素,find_element_by_xpath()方法是通过元素的相对位置和标签属性等信息确定。

示例1:使用Selenium实现国际空间站实时追踪

以下示例通过Selenium实现了国际空间站的实时追踪,实现的功能包括获取当前时间、经度、纬度、当前位置、可见天体等信息,然后将这些信息输出到控制台。

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://www.n2yo.com/')

time.sleep(5)  # 加载页面需要一定的时间

driver.execute_script('document.getElementById("lat").value = "22.314202"')  # 设置纬度
driver.execute_script('document.getElementById("lon").value = "113.934036"')  # 设置经度

time.sleep(5)  # 需要一定的时间重新加载

div = driver.find_element_by_id('infoContent')

timeStr = div.find_element_by_id('info-date').text  # 获取时间
latStr = div.find_element_by_id('info-latitude').text  # 获取纬度
lonStr = div.find_element_by_id('info-longitude').text  # 获取经度
posStr = div.find_element_by_id('info-location').text  # 获取位置
seenStr = div.find_element_by_id('info-visibility').text  # 获取可见天体

print('Time:', timeStr)
print('Latitude:', latStr)
print('Longitude:', lonStr)
print('Position:', posStr.strip())
print('Seen:', seenStr.strip())

driver.close()

以上代码中,我们首先通过webdriver对象打开空间站追踪页面,然后设置了站点的经度和纬度信息。接下来,需要等待一定时间,以便页面加载完成。我们通过find_element_by_id()方法查找到包含有实时追踪信息的页面块,从中提取我们需要的信息,并将这些信息打印到控制台上。

示例2:使用Selenium实现微博登录

以下示例通过Selenium模拟登录微博平台,并实现获取当前登录用户的粉丝数。

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get('https://www.weibo.com')

time.sleep(5)

login_btn = driver.find_element_by_xpath('//a[@node-type="loginBtn"]')  # 查找登录按钮
login_btn.click()

time.sleep(5)

email_input = driver.find_element_by_id('loginname')  # 查找邮箱输入框
password_input = driver.find_element_by_name('password')  #查找密码输入框

email_input.clear()  # 清除邮箱输入框
password_input.clear()  # 清除密码输入框

email_input.send_keys('your_email')  # 输入邮箱
password_input.send_keys('your_password')  # 输入密码

time.sleep(2)

login_submit = driver.find_element_by_xpath('//a[@node-type="submitBtn"]')  # 查找登录按钮
login_submit.click()

time.sleep(5)

user_menu = driver.find_element_by_xpath('//a[@node-type="name"]')
user_menu.click()

time.sleep(5)

fans_num = driver.find_element_by_xpath('//strong[@node-type="fans"]')
print('Current user fans:', fans_num.text)

driver.close()

以上代码中,我们首先通过webdriver对象打开微博主页面,然后查找登录按钮,并通过输入框输入邮箱和密码。接下来,我们等待页面加载完毕,然后点击登录按钮进行登录。登录成功后,我们需要查找当前用户粉丝数的对应页面元素,最后将其输出到控制台上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python脚本Selenium及页面Web元素定位详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • DIV+CSS中让布局、背景图片、文字内容居中的方法

    下面开始详细讲解DIV+CSS中让布局、背景图片、文字内容居中的方法。 一、水平居中 对于宽度确定的块级元素,我们可以使用margin来实现水平居中。具体实现方法是,给元素设置左右margin为auto即可。 div{ width: 300px; /*设置元素的宽度*/ margin: 0 auto; /*让元素水平居中*/ } 对于宽度不确定的块级元素,我…

    css 2023年6月9日
    00
  • 前端jquery部分很精彩

    前端jquery部分很精彩,是因为它为前端开发带来了很多优秀的库和插件,可以快速地实现很多功能,节省了很多时间和精力。同时,jQuery还具有很好的兼容性,能够兼容各种浏览器。在实际项目中,正是由于jQuery的使用,实现了很多复杂的功能。 下面以两个具体的示例来说明: 1. 图片懒加载 图片懒加载是一种优化策略,可以显著提高网站性能。使用jQuery实现图…

    css 2023年6月9日
    00
  • CSS3实现时间轴特效

    下面是详细的“CSS3实现时间轴特效”的完整攻略: 步骤1:HTML结构和基本样式的创建 首先,我们需要搭建时间轴结构的HTML。一般来说,时间轴的结构可以使用ul列表方式进行创建。在ul中,我们需要添加相应的li元素,以及相关的div和p标签,根据需要可以更改样式。此外,在创建时间轴之前,我们还需要先行创建相关的基本样式,如下: .container { …

    css 2023年6月10日
    00
  • 微信小程序如何引用外部js,外部样式,公共页面模板

    微信小程序作为一种新型轻量级应用程序开发框架,拥有着使用方便、内置依赖库齐全、开发效率高等优点。但我们也会遇到需要引用外部js、css、公共页面模板等需求。下面将介绍在微信小程序中如何引用外部js、css以及公共页面模板。 引用外部js 在微信小程序中,我们可以通过<script>标签来引入外部js。如下是一个简单的示例: <view&gt…

    css 2023年6月10日
    00
  • 用js控制css的不错的方法

    控制CSS的方法主要分为以下几个方面: 操作DOM元素:通过JavaScript中的document对象获取HTML元素,然后修改其样式属性来实现控制CSS的效果。 操作样式表:通过JavaScript中的<style>标签或<link>标签获取样式表,然后修改其中的样式规则来实现控制CSS的效果。 下面分别对这两个方面进行详细讲解:…

    css 2023年6月9日
    00
  • 用css3实现转换过渡和动画效果

    下面是详细讲解怎样用CSS3实现转换、过渡和动画效果的完整攻略: 1. 转换效果 CSS3 提供了一系列的转换效果,可以让元素旋转、倾斜、缩放和移动等。可以通过 transform 属性来实现。 1.1 语法 transform: <transform-function> [<transform-function>]* 其中,<…

    css 2023年6月10日
    00
  • css实现跨浏览器的box-shadow盒阴影效果告别图片实现类似效果(2)

    CSS的box-shadow属性可以在元素周围添加阴影。使用该属性可以实现各种效果,例如给按钮添加点击效果等。然而,不同浏览器对box-shadow的实现方式略有不同,这可能导致在某些浏览器中产生不一致的显示效果。 为了解决这个问题,我们可以使用带有私有前缀的box-shadow属性。私有前缀是浏览器厂商用于实验性属性的前缀,这些属性还没有被标准化,但它们可…

    css 2023年6月9日
    00
  • 认识less和webstrom的less配置方法

    认识 LESS 和 WebStorm 的 LESS 配置方法 LESS 是一种 CSS 预处理器,它可以扩展 CSS 语言,为 CSS 增加变量、函数、Mixin 等功能,可以让开发者快速编写出规范、高效的 CSS,同时减少 CSS 代码的重复。WebStorm 则是一款 JetBrains 公司开发的 IDE(集成开发环境),提供强大的代码编辑、调试、测试…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部