前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >selenium基础使用-3-异常问题汇总

selenium基础使用-3-异常问题汇总

作者头像
沈宥
发布于 2022-05-09 13:39:09
发布于 2022-05-09 13:39:09
51700
代码可运行
举报
运行总次数:0
代码可运行
1、封装一个函数,判断当前元素是否存在
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium.common.exceptions import NoSuchElementException
def isElementExist(xpath_value,driver):
    """
    用来判断元素标签是否存在,
    """
    try:
        element = driver.find_element_by_xpath(xpath_value)
    # 原文是except NoSuchElementException, e:
    except NoSuchElementException as e:
        # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
        return False
    else:
        # 没有发生异常,表示在页面中找到了该元素,返回True
        return True

2、通过xpath获取href链接

正常情况下,直接通过如下方式获取即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
href_temp = browser.find_element_by_xpath('//*[@id="1"]/h3/a/@href')

但事实上,上述方法selenium会报错,正确的应该为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
href_answer  = browser.find_element_by_xpath('//*[@id="1"]/h3/a')
href_link = href_answer.get_attribute('href')

3、新开Tab并在多个Tab中切换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 # 通过执行js来新开一个窗口
 new_tab_js = 'window.open("'+ href_link + '");'
 browser.execute_script(new_tab_js)

 # 输出当前窗口句柄(搜索结果页)
 baidu_handle = browser.current_window_handle

 # 获取当前窗口句柄集合
 handles = browser.window_handles

 # 获取结果详情页窗口
 result_handle = None
 for handle in handles:
     if handle != baidu_handle:
         result_handle = handle

 # 输出当前窗口句柄
 browser.switch_to.window(result_handle)
 #在详情页中找结果
 get_result_detail(browser)

 # 关闭当前窗口
 browser.close()

4、获取span标签中的文本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
answer_number = browser.find_element_by_xpath('//*[@id="qb-content"]/div[2]/span[2]').get_attribute('innerHTML')

5、通过find_element_by_class_name获取元素失败

根据Inspect获取到class_name,当去抓取时报错无该元素: best_answer = browser.find_element_by_class_name('best-text mb-10')

这是因为使用CSS选择器的时候不允许使用空格,需要将class_name中的空格替换成英文的点“.”

best_answer = browser.find_element_by_class_name('best-text.mb-10')

6、通过find_element()方法获取元素

获取元素除了指定获取方式的方法,还有更灵活的方法 element = driver.find_element(by=by, value=value)

定位方式

By

id

By.ID

name

By.NAME

class_name

By.CLASS_NAME

tag_name

By.TAG_NAME

link_text

By.LINK_TEXT

partial_link_text

By.PARTIAL_LINK_TEXT

css_selector

By.CSS_SELECTOR

xpath

By.XPATH

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从头开始学习测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
selenium实战-抓取百度网盘分享链接
(3)在搜索结果中遍历,列表页进入详情页,如果结果详情页中存在百度网盘分享链接,考察分享链接是否已经失效
沈宥
2022/05/09
9790
selenium实战-抓取百度网盘分享链接
Python Selenium库的使用「建议收藏」
Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
全栈程序员站长
2022/07/29
4.4K0
Python Selenium库的使用「建议收藏」
自动化-Selenium 3-常用API(Python版)
ActionChains类提供的鼠标事件常用方法(perform()执行所有ActionChains中存储的行为):
wangmcn
2022/07/22
1.3K0
自动化-Selenium 3-常用API(Python版)
selenium常用webdriver api汇总
1.driver.current_url:用于获得当前页面的URL 2.driver.title:用于获取当前页面的标题 3.driver.page_source:用于获取页面html源代码 4.driver.current_window_handle:用于获取当前窗口句柄 5.driver.window_handles:用于获取所有窗口句柄 6.driver.find_element_by***** 定位元素,有18种 7.driver.get(url):浏览器加载url。 8.driver.forward():浏览器向前(点击向前按钮)。 9.driver.back():浏览器向后(点击向后按钮)。 10.driver.refresh():浏览器刷新(点击刷新按钮)。 11driver.close():关闭当前窗口,或最后打开的窗口。 12.driver.quit():关闭所有关联窗口,并且安全关闭session。 13.driver.maximize_window():最大化浏览器窗口。 14.driver.set_window_size(宽,高):设置浏览器窗口大小。 15.driver.get_window_size():获取当前窗口的长和宽。 16.driver.get_window_position():获取当前窗口坐标。 17.driver.get_screenshot_as_file(filename):截取当前窗口。 18.driver.implicitly_wait(秒):隐式等待,通过一定的时长等待页面上某一元素加载完成。若提前定位到元素,则继续执行。若超过时间未加载出,则抛出NoSuchElementException异常。 19.driver.switch_to_frame(id或name属性值):切换到新表单(同一窗口)。若无id或属性值,可先通过xpath定位到iframe,再将值传给switch_to_frame() driver.switch_to.frame(id或name,或定位到的frame) 20.driver.switch_to.parent_content():跳出当前一级表单。该方法默认对应于离它最近的switch_to.frame()方法。 21.driver.switch_to.default_content():跳回最外层的页面。 22.driver.switch_to_window(窗口句柄):切换到新窗口。 23.driver.switch_to.window(窗口句柄):切换到新窗口。 24.driver.switch_to_alert():警告框处理。处理JavaScript所生成的alert,confirm,prompt. 25.driver.switch_to.alert():警告框处理。 26.driver.execute_script(js):调用js。 27.driver.get_cookies():获取当前会话所有cookie信息。 28.driver.get_cookie(cookie_name):返回字典的key为“cookie_name”的cookie信息。 29.driver.add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典对象,必须有name和value值。 30.driver.delete_cookie(name,optionsString):删除cookie信息。 31.driver.delete_all_cookies():删除所有cookie信息。
taoli
2022/10/08
5790
Selenium入门
查看chrom浏览器的版本,需要下载其对应版本的chrome webdriver.
测试加
2022/03/24
2.7K0
Selenium入门
知否知否-----selenium知多少(二)
上期我们讲了一些selenium一些最近的元素定位,触发事件,等待等等,今天我们继续来看看接下来的知识点。
我被狗咬了
2019/09/23
1.5K0
知否知否-----selenium知多少(二)
[Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)
Selenium是一款用于测试Web应用程序的经典工具,它直接运行在浏览器中,仿佛真正的用户在操作浏览器一样,主要用于网站自动化测试、网站模拟登陆、自动操作键盘和鼠标、测试浏览器兼容性、测试网站功能等,同时也可以用来制作简易的网络爬虫。
Eastmount
2021/12/02
4.9K0
[Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、鼠标操作)
selenium的使用(有点意思)
安装配置很简单,只需要下载对应的版本后将chromedriver.exe文件复制python路径下的Scripts路径下即可。
不断折腾
2019/09/23
1.2K0
selenium的使用(有点意思)
《手把手带你学爬虫──初级篇》第5课 Selenium WebDriver的用法
Selenium 是一个自动化测试工具,WebDriver是它提供的一套操作浏览器的API,由于WebDriver针对多种编程语言都实现了这些API,因此它可以支持多种编程语言。
GitOPEN
2019/01/29
2.7K0
《手把手带你学爬虫──初级篇》第5课  Selenium WebDriver的用法
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
  “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目。在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区。“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个,倒数第一个节目称“压台”。想看“压台篇”,敬请关注宏哥
北京-宏哥
2019/12/10
1.3K0
《手把手教你》系列练习篇之7-python+ selenium自动化测试 -压轴篇(详细教程)
Selenium自动化工具集 - 完整指南和使用教程
Selenium 是一个用于自动化浏览器操作的工具集。它通过模拟用户在浏览器中的行为,如点击、输入、表单提交等,来实现自动化测试和网页数据抓取等功能。Selenium 针对不同的浏览器提供了不同的 WebDriver 接口,如 ChromeDriver、GeckoDriver(Firefox)、WebDriver(Safari)等。
全栈若城
2024/02/29
2K0
Selenium自动化工具集 - 完整指南和使用教程
selenium最大化浏览器-Web UI自动化测试之Selenium工具篇
  注意:3.0 版本下所有浏览器除了需要安装 框架 以外,还需要安装对应的驱动程序
宜轩
2022/12/26
1.9K0
Selenium帮助你轻松实现浏览器多窗口操作
元素有属性,浏览器的窗口其实也有属性的,浏览器窗口的属性用句柄(handle)来识别。
霍格沃兹测试开发Muller老师
2024/03/04
4070
Selenium WebDriver API 学习笔记(三):浏览器控制
读了虫师《Selenium 2自动化测试实战 基于Python语言》一书,感触颇深,内容非常丰富。现整理下来,供后续学习参考使用。本次主要整理的是元素浏览器控制之二。内容在“Selenium WebDriver API 学习笔记(二):浏览器控制”基础上添加。
虫无涯
2023/01/17
8420
Selenium库的使用
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
萌海无涯
2019/08/02
1.4K0
「Python爬虫系列讲解」八、Selenium 技术
前文回顾: 「Python爬虫系列讲解」一、网络数据爬取概述 「Python爬虫系列讲解」二、Python知识初学 「Python爬虫系列讲解」三、正则表达式爬虫之牛刀小试 「Python爬虫系列讲解」四、BeautifulSoup 技术 「Python爬虫系列讲解」五、用 BeautifulSoup 爬取电影信息 「Python爬虫系列讲解」六、Python 数据库知识 「Python爬虫系列讲解」七、基于数据库存储的 BeautifulSoup 招聘爬取
荣仔_最靓的仔
2021/02/02
7.3K0
「Python爬虫系列讲解」八、Selenium 技术
Selenium Webdriver常用方法
目录[-] 实例化方法 from selenium import webdriver driver = webdriver.Chrome(executable_path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver') 浏览器操作 浏览器最大化 driver.maximize_window() 设置浏览器宽高 driver.set_window_size(480, 800) 控制浏览器前进后退 driver.back()
jhao104
2018/03/20
2.7K0
Selenium 系列篇(三):窗口篇
Selenium 自动化过程中,对窗口本身的操作包含:打开一个窗口、关闭一个窗口、刷新一个窗口、窗口的回退和前进。
AirPython
2020/09/22
2.6K0
Selenium 系列篇(三):窗口篇
自动化测试中对Alert, 多窗口,下拉框的处理
selenium的API提供了对alert弹出框的处理方式,可以对alert弹出框来进行处理的,如弹出框,我们获取弹出框的Text,或者接受弹出框,或者是取消(关闭)弹出框,下面分别是alert,Confirmation,Prompt进行一一的说明。selenium操作alert需要导入alert的发类,具体为:fromselenium.webdriver.common.alert import Alert alert类的属性汇总如下:
无涯WuYa
2018/10/25
3.2K0
自动化测试中对Alert, 多窗口,下拉框的处理
2万字带你了解Selenium全攻略
今天带大家一起学(复)习模拟浏览器运行的库Selenium,它是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera和Edge等。
可以叫我才哥
2021/12/28
3.1K0
2万字带你了解Selenium全攻略
推荐阅读
相关推荐
selenium实战-抓取百度网盘分享链接
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文