0


Selenium+Python系列环境搭建及 元素定位那些事

一、环境搭建

1、Python环境搭建

使用版本:

  • Mac系统
  • Python 3.10.8
  • Selenium4.5.0

python的安装:

https://www.python.org/

下载安装.

终端输入

python3

,如下图所示:

2、安装Selenium及驱动:

selenium类库安装

pip3 install selenium

驱动类库安装(告别手动下载驱动包)

pip install webdriver-manager

安装完成,如下图所示:

这里有一个警告,是

pip3

命令需要进行升级(pip是一个用于安装及维护Python包的命令)

1、第一个脚本

环境基本搞定了,使用

pycharm

创建好工程后,运行如下代码:

# -*- coding: utf-8 -*-
"""
@Time :2022/10/18 10:21 PM
@File :demo.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)
"""
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.baidu.com/")
driver.quit()

2、可能遇到的问题

就像我一样,把代码复制到编译器里运行报错,如下图所示:

3、解决办法

终端输入如下:

pip install packaging

注意: 这些pip命令也要在Pycharm中输入,如下图所示:

成功解决问题,这里要吐槽下自己,度娘后发现,居然是缺少类库引起,真的是笨的可以,哭笑不得,哈哈哈!

4、运行效果

三、元素定位

这部分内容可以说是重中之重了,也是大部分写

web

自动化的同学,必会入门技能之一了。

1、常见八种定位元素方法

我们还是直接来看源代码吧,示例如下:

# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

"""
The By implementation.
"""

class By:
    """
    Set of supported locator strategies.
    """

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

2、根据id定位元素

driver.find_element(By.ID,"kw")

3、根据xpath定位元素

driver.find_element(By.XPATH, '//*[@id="kw"]')

4、根据css定位器定位元素

driver.find_element(By.CSS_SELECTOR, '#kw')

5、根据name属性值定位元素

driver.find_element(By.NAME, 'wd')

6、根据class_name类名定位元素

driver.find_element(By.CLASS_NAME, 's_ipt')

7、根据链接文本定位元素

driver.find_element(By.LINK_TEXT, 'hao123')

8、根据部分链接文本定位元素

driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')

9、根据标签名定位元素

driver.find_element(By.TAG_NAME, 'input')

四、find_element与find_elements区别

  • find_elemnet:定位到是一个对象,定位不到则报错。
  • find_elemnets:定位到是一个含元素的列表,定位不到是一个空列表。

五、值得关注的问题

1、举个栗子

# 这句运行直接报错
driver.find_element_by_id('kw').send_keys('python')
# 这句就正常
driver.find_element(By.ID,"kw").send_keys(u"111 3333")

2、为什么报错

来吧,还是直接看源代码学习,如下所示:

不难看出,最新版本只能通过find这种写法去写,已经不支持老版本写法。


本文转载自: https://blog.csdn.net/caixiangting/article/details/127447768
版权归原作者 测试小鬼 所有, 如有侵权,请联系我们删除。

“Selenium+Python系列环境搭建及 元素定位那些事”的评论:

还没有评论