Python之selenium自动化开发click()点击无效原因

这篇具有很好参考价值的文章主要介绍了Python之selenium自动化开发click()点击无效原因。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

问题

解决方案

一、元素含有href属性,属性为JavaScript

二、元素含有href属性,属性为超链接

三、目标元素是输入框形式的元素

四、标签的触发区域问题

总结


问题:

每一个大学生肯定都为学习通等线上网课头疼过,所以我最近就心血来潮打算自己写一个挂课答题程序。开发到中后期测试的时候发现,有的时候click()方法点击元素有效有的时候无效。出现问题的代码片段如下:

wait = WebDriverWait(browser, 10)
wait.until(expected_conditions.presence_of_element_located((By.XPATH, '//div[@id="content1"]//div[@class="cells"][{}]/div[{}]/h4/span'.format(item + 1, node_ordinal + 1))))
node = browser.find_element(By.XPATH, '//div[@id="content1"]//div[@class="cells"][{}]/div[{}]/h4/span'.format(item + 1, node_ordinal + 1))
node.click()

解决方案:

当时就麻了呀,上网查是有以下几个原因:

一、元素含有href属性,属性为JavaScript:

对于这种情况就要模拟js点击操作了,代码可以参考如下:

javascript = 'document.getElementsByClassName("btn btn-login")[0].click()'
driver.execute_script(javascript)

二、元素含有href属性,属性为超链接:

对于这种情况就需要获取超链接内容也就是href的值后,另开一个新的选项卡转到href链接,参考代码如下:

url = element.get_attribute('href')    //获取目标元素href的值
browser.execute_script('Window.open()')    //新开一个选项卡
browser.switch_to.window(browser.window_handles[-1])    //将操作焦点转到新创的选项卡
browser.get(url)    //进入链接

三、目标元素是输入框形式的元素:

此时可以通过模仿键盘输入回车键达到提交表单跳转页面,参考代码如下:

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

input = browser.find_element(By.ID, 'kw')
input.send_keys('Python')
input.send_keys(Keys.ENTER)

四、标签的触发区域问题:

虽然前三个能解决大部分的click()点击无效的问题,但是我的问题还是没能解决,于是我去selenium官网看了一下click()相关文档,还真让我发现了问题所在,先上官网原话截图:selenium click无效,python,selenium,自动化

图中划红线的部分就是问题所在。整句话翻译过来就是:如果目标元素尚未交互,那么click()方法会模拟鼠标点击标签图形的中心区域,问题就出在这个中心区域。对于中心区域的定义就像官方举的例子一样:selenium click无效,python,selenium,自动化

每个标签都有固定的光标出发区域,但是如果区域中心点被覆盖那么点击就会失效。

我在元素审查的时候也发现,这玩意能不能触发有时候会被标题标签h给覆盖掉,于是我就找找看有没有别的元素也能用代替被点击并且百分百触发,还真让我找到了span标签,不光可以触发页面跳转,而且它的触发中心没有被覆盖,把代码修改一下之后调试没问题了。

总结:

如果有码友使用selenium做可视化自动爬虫的时候要注意了,对于标签执行click()方法操作的时候,可能因为标签触发区域被覆盖导致点击失效。

点击这里查看selenium官方click()方法相关文档

点击这里查看selenium官方标签区域相关文档文章来源地址https://www.toymoban.com/news/detail-815541.html

到了这里,关于Python之selenium自动化开发click()点击无效原因的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【selenium】自动化测试中,元素无法点击定位等问题的解决:js的使用方法

    在自动化测试中经常会遇到使用selenium方法定位元素点击操作失败的情况,例如,我们想实现在浏览器输入http://www.baidu.com,进入百度首页后,鼠标悬停在“更多产品”上,点击“全部产品” 若不使用js的话,代码应该如下图所示: 我们执行代码后,发现会报错 我们该如何解

    2024年02月08日
    浏览(32)
  • 【测试开发】自动化测试 selenium 篇

    目录 一. 什么是自动化测试 二. selenium 1. selenium的工作原理  2. selenium+Java的环境搭建(Chrome浏览器)  三. selenium中常用的API 1. 定位元素 findElement 1.1 css选择语法  1.2 xpath 2. 操作测试对象 2.1  sendKeys-在对象上模拟按键输入 2.2 click-点击对象 2.3 clear-清除对象输入的文本内容 2.4 s

    2024年02月13日
    浏览(30)
  • 【测试开发之路】Java & Selenium自动化

    1、Selenium介绍 ​ 使用前需要下载浏览器对应的Driver,Selenium提供了EdgeDriver和ChromiumDriver两种驱动类。需要安装与本机浏览器版本相同的驱动。 ​ EdgeDriver下载地址:Microsoft Edge WebDriver - Microsoft Edge Developer ​ ChromiumDriver下载地址:CNPM Binaries Mirror (npmmirror.com) 2、导入Maven库 (

    2024年02月12日
    浏览(33)
  • 【RPA开发】Selenium 实现网页自动化

    开发时有时会遇到网页爬取限制的情况,那么此时可以通过 Selenium 来解决这个问题,因为 Selenium 是模拟浏览器执行网页爬取,相比 Request/API 操作更安全,服务器会完全认为是用户在用浏览器进行操作,如此可以实现网页自动化操作,由于 Selenium 是完全模拟浏览器操作,因此

    2023年04月25日
    浏览(47)
  • Python Selenium UI自动化测试_python 自动化ui测试

    2.2 安装selenium pip install selenium pip install selenium==2.53.0 2.3 下载webdriver驱动 以chrome浏览器为例 查看chrome浏览器版本:在地址栏输入 chrome://version chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html 下载与浏览器版本对应的chrome driver 将下载好的chrome driver 解压,并放至到

    2024年04月14日
    浏览(54)
  • 【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(49)
  • 如何使用Python自动化测试工具Selenium进行网页自动化?

    Selenium 是一个流行的Web自动化测试框架, 它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为 。 Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAutoGUI和AutoIt相比, Selenium更适合于处

    2023年04月09日
    浏览(90)
  • Python自动化实战之使用Selenium进行Web自动化详解

    为了完成一项重复的任务,你需要在网站上进行大量的点击和操作,每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中,我们将会介绍如何使用Python的Selenium库进行Web自动化,以及如何将它应用于实际项目中。如果你是一名Python爱好

    2024年02月13日
    浏览(37)
  • Python + Selenium自动化测试

    一、python 1、python下载与安装 官方下载地址: Python Releases for Windows | Python.org https://www.python.org/downloads/windows/ 下载应用程序,双击运行 选择install now进行安装,下方勾选第二个选项系统可自动添加环境变量   等待python安装  安装完成后,点击“Close”关闭 进入cmd验证是否已完

    2023年04月24日
    浏览(42)
  • 【测试开发】第五节.测试——自动化测试(Selenium工具)

    作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java测试开发 每日一句: 人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 一、自动化测试的概念以及分类 二、Selenium—web自动化测试工具 2.1 自动化测试的一些前置工作 2.2 第一个自动化实例

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包