首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Selenium Python在特定的下拉菜单列表保存和整个列表请求之前保持特定页面的驱动程序?

如何使用Selenium Python在特定的下拉菜单列表保存和整个列表请求之前保持特定页面的驱动程序?
EN

Stack Overflow用户
提问于 2017-02-05 02:22:54
回答 1查看 68关注 0票数 0

我为这个页面(http://www.bobaedream.co.kr/cyber/CyberCar.php?gubun=I)做了一个爬虫来收集特定制造商的库存列表。我的代码从选择搜索菜单第一行中的下拉菜单开始。

每个右侧下拉菜单都是其左侧下拉菜单的子菜单。我想要做的是选择每个下拉菜单中的第一个项目,然后单击“搜索”按钮进行第一次运行。在抓取它的股票列表后,我设置了最后一个下拉菜单的第二项,然后单击"search“按钮。(如果最后一个下拉菜单中只有一个项目,则转到倒数第二个下拉菜单,然后选择其中的第二个项目。)

但问题发生在这里。我将每个下拉菜单中的每一项都保存为元组。当我尝试调用第二轮爬行的最后一个下拉菜单的第二项时,出现了"StaleElementReferenceException“或"NoSuchElementException”,并显示消息"Element is no attached to the DOM“。因此,我希望在每次下拉菜单迭代完成之前进行驱动。

下面是我的代码,但仍然有错误消息。我的错误通常发生在第二个while循环中。此时,我添加了一些“等待”函数和“刷新”函数。有时在我的代码中跳出while循环会有所帮助,但通常会陷入while循环和无限重复中。我猜第二个"try“函数中的某种类型的"wait.until(EC.~)”代码可以解决这个问题,但我没有具体的想法。请帮助我或给我任何建议。

代码语言:javascript
运行
AI代码解释
复制
def option2_menu_loaded(inDriver):
    path = '//select[@id="level2_no"]'
    return inDriver.find_element_by_xpath(path)

self.wait.until(option2_menu_loaded)

while True:
    try:
        select_option2_values = [
            ('%s' % o.get_attribute('text'), '%s' % o.get_attribute('value'))
            for o
            in Select(self.driver.find_element_by_css_selector("#level2_no")).options
            if o.get_attribute('text') != '세부등급']
    except (StaleElementReferenceException, NoSuchElementException):
        print("=======Exception Found - Option2 Save=====")
        self.driver.refresh()
        self.driver.implicitly_wait(1.5)
        continue
    break

for option2 in select_option2_values:
    self.csv.setCarTitle(ma, mo, de, option1[0], option2[0])

    print(option2[0], option2[1])
    self.driver.implicitly_wait(0.5)

    while True:
        try:
            Select(self.driver.find_element_by_css_selector("#level2_no")).select_by_value(option2[1])

        except (StaleElementReferenceException, NoSuchElementException):
            print("=======Exception Found - Option2 Request=====")
            self.driver.refresh()
            self.driver.implicitly_wait(1.5)
            self.driver.refresh()
            continue
        break
EN

回答 1

Stack Overflow用户

发布于 2017-02-05 10:24:36

这意味着包在查找元素和使用element对象之间重新加载,确保页面首先加载,并在每次需要使用时搜索元素。

一个额外的检查是在执行select之前为元素添加额外的等待,因为find_element_by_css_selector根本不会等待元素可用。

顺序应为:页面已加载>等待元素存在>对元素执行操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42047928

复制
相关文章
使用 Python 删除大于特定值的列表元素
Lambda 函数,通常称为“匿名函数”,与普通的 Python 函数相同,只是它可以在没有名称的情况下定义。def 关键字用于定义普通函数,而 lambda 关键字用于定义匿名函数。但是,它们仅限于单一的表达方式。与常规函数一样,它们可以接受多个参数。
很酷的站长
2023/02/23
10.9K0
使用 Python 删除大于特定值的列表元素
python:删除列表中特定元素的几种方法
终于刷到一条不看答案就能轻松解出来的题目,更重要的是学习到了几种删除列表中元素的方法,值得做一下笔记
冰霜
2022/03/19
8.6K0
python:删除列表中特定元素的几种方法
ICCII中如何保持特定module的port
在进行后端设计时,为了使得最终的结果更加优化,也就是面积,功耗,性能更好,工具在优化时可能会把module的port改变。但是这样可能会带来一些问题。问题之一就是前端在进行仿真的时候,由于某些module port找不到了,很难找到需要监测的信号。
白山头
2020/09/15
2.7K0
python保存列表
保存为.npy格式 先将list转为np.array格式,再保存为.npy格式
py3study
2020/01/09
2.2K0
Redis进阶-如何从海量的 key 中找出特定的key列表 & Scan详解
假设你需要从 Redis 实例成千上万的 key 中找出特定前缀的 key 列表来手动处理数据,可能是修改它的值,也可能是删除 key。那该如何从海量的 key 中找出满足特定前缀的 key 列表来?
小小工匠
2021/08/17
4.8K0
如何理解和使用Python中的列表
Python有6个序列的内置类型,但最常见的是列表和元组。今天我们就来讲讲列表。
小土豆Yuki
2020/06/15
7.2K0
php截取特定字符前面和后面的内容
1、php 截取特定字符后面的内容 可以使用函数strripos,获取一个字符串在另一个字符串中第一次出现的位置。 $number = '1_0'; $result = substr($number,strripos($number,"_")+1); echo $result; 该程式输出0 2、php 截取特定字符前面的内容 可以使用函数strrops,获取一个字符串在另一个字符串中最后一次出现的位置。 $test = '1_0'; $result = substr($test,0,strrpos($t
用户8099761
2023/05/11
2.4K0
如何使用特定显卡跑pyTorch
如何使用特定显卡跑pyTorch。方法一:改变系统变量使得仅目标显卡可见:export CUDA_VISIBLE_DEVICES=0 #这里是要使用的GPU编号,正常的话是从0开始然后再运行pyTorch即可。方法二:使用torch.cuda接口:#在生成网络对象之前:torch.cuda.set_device(0)方法三:使用多pytorch的并行GPU接口:net = torch.nn.DataParallel(model, device_ids=[0])方法四:初始化模型时net = Net.cuda
狼啸风云
2020/02/13
2.9K0
python 获取今天之前n天的列表
python获取今天之前n天的数据列表: >>> get_before_n_days(30) ['20171101', '20171003', '20171004', '20171005', '20171006', '20171007', '20171008', '20171009', '20171010', '20171011', '20171012', '20171013', '20171014', '20171015', '20171016', '20171017', '20171018', '201
葫芦
2019/04/17
9620
python读取特定的行
fr = open(filename) for line in fr.readlines():     if line.startswith("#"):         continue     else:         ## do something with line          ## could use fr.readlines()[1:]  from second line import linecache content_list = linecache.getlines(filenam
py3study
2020/01/13
4K0
Jekyll x Liquid 控制文章列表只显示特定类别的Post
这个也很简单, 只需要立一个 Flag循环判断是否含有这个 Tag 就行 o(
szhshp
2022/08/15
4900
python删除特定文件
python删除特定文件 [Python]代码     #!/usr/bin/python # -*- coding: utf-8 -*- import os def del_files(path): for root , dirs, files in os.walk(path): for name in files: if name.endswith(".CR2"): os.remove(os.path.join(root,
用户7705674
2021/11/01
2.1K0
python删除特定文件
[Python]代码     #!/usr/bin/python # -*- coding: utf-8 -*- import os def del_files(path): for root , dirs, files in os.walk(path): for name in files: if name.endswith(".CR2"): os.remove(os.path.join(root, name))
用户7718188
2021/11/02
2.2K0
Python Selenium下拉列表元素定位
1.定位父元素select,然后通过tag name找到所有option,得到option元素的数组,然后通过数组索引定位,最后click.
十四君
2019/11/23
2K0
axios(封装使用、拦截特定请求、判断所有请求加载完毕)
业务上经常出现这个问题,需要拦截某些特定请求,在该特定请求,页面采取或不采取什么变化
Krry
2019/04/09
5.6K0
使用Python轻松抓取网页
抓取网页入门其实挺简单的。在之前的文章中我们介绍了怎么用C#和JAVA两种方法来抓取网页,这一期给大家介绍一种更容易,也是使用最广泛的一种抓取方法,那就是Python。
用户7850017
2021/09/24
14.1K0
使用Python轻松抓取网页
如何使用CP / SCP / RSYNC在Linux中排除特定目录?
对于任何系统管理员或一般Linux操作系统用户而言,在服务器之间执行文件复制操作都是一项常见任务。在将文件从一个系统复制到另一个系统时,由于某些特定原因,我们可能需要排除某些文件和目录被复制。即使在同一系统上将数据从一个位置传输到另一位置时,这也可能适用。
用户6543014
2020/05/04
15.8K0
【说站】python如何导入模块的特定函数
1、可以导入模块中的特定函数: from pygame import make_bullet。
很酷的站长
2022/11/24
2K0
【说站】python如何导入模块的特定函数
在scala中使用spark sql解决特定需求
Spark sql on hive的一个强大之处就是能够嵌在编程语言内执行,比如在Java或者Scala,Python里面,正是因为这样的特性,使得spark sql开发变得更加有趣。 比如我们想做一个简单的交互式查询,我们可以直接在Linux终端直接执行spark sql查询Hive来分析,也可以开发一个jar来完成特定的任务。 有些时候单纯的使用sql开发可能功能有限,比如我有下面的一个功能: 一张大的hive表里面有许多带有日期的数据,现在一个需求是能够把不同天的数据分离导入到不同天的es索引里面,方
我是攻城师
2018/05/14
1.3K0
点击加载更多

相似问题

在Selenium web驱动程序中选择特定的下拉菜单列表项

21

如何使用Selenium和Python遍历项目列表并提取特定部分

11

如何结合使用Selenium和Python从列表中获取特定元素

124

Python:如何保存具有特定值的列表?

20

如何使用selenium/python提取特定页面的URL?

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档