zoukankan      html  css  js  c++  java
  • Selenium模拟操作中按钮点击(click) 失效解决方法

    在使用selenium模拟操作时经常遇到一些使用原始方法解决不了的问题。
    click失效问题

    曾经多次遇到元素click()失败的情况,经典的例子就是某网站的登录框。

    一般遇到click失败时我的一般处理方法是改用send_keys(Keys.ENTER),直接用发回车键,简单粗暴。

    但是某网站的登录框,直接定位按钮元素click无效,发送回车键也无效,分析应该是焦点问题,但是试了多种方法也不成。

    经过实验,当焦点在登录框的用户文本框中,按回车会依次从用户名框、密码框到提交按钮。

    定位用户名文本框,发送多个回车键,顺利登录。

    当然麻烦点调用js也可以实现。

    这种问题在Spynner、Ghost.py中也会出现,应当是某种前端框架或者webkit内核的问题。

    文本框输入内容失败

    这种问题同样是在某网站登录框中遇到的。
    最常见的文本框输入内容出问题是文本框的placeholder造成的。

    解决方法:先用element.clear()清除原来文本框的placeholder,再用 element.send_keys(content)发送内容。

    但是这种方法仍然处理不了,只能祭出execute_script了。

    我给一个简单的代码来演示一下:

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

    driver = webdriver.Chrome()
    url = "https://www.baidu.com"
    driver.get(url=url)
    import time
    time.sleep(3)

    这两种都是可以的 点击事件 一种是键盘点击, 第二种 就祭出我们的execute_script 执行js, 简单粗暴

    driver.find_element_by_id("kw").send_keys("天下")
    time.sleep(3)
    driver.find_element_by_id("su").send_keys(Keys.ENTER)

    js = 'document.getElementById("su").click();'

    driver.execute_script(js)

    这两种方法都是可以的,我们这里面没有采用原始的方式 .click()

    当然 这里面采用原始的 click() 也是可以的, 只不过是举一个测试的例子

  • 相关阅读:
    Tomcat 配置 login 和 gas
    Mac系统终端命令行不执行命令 总出现command not found解决方法
    NodeJS入门---nodejs详细安装步骤
    Android UI 自动化-Android环境安装
    UI自动化-Chrome元素定位插件CreateXpath的安装及使用
    eclipse解决中文乱码
    pytest的allure的环境配置
    pytest基础简介及实践举例
    Appium 工作原理及 Desired Capabilities
    Appium_adb常用命令总结
  • 原文地址:https://www.cnblogs.com/wwyydd/p/14500461.html
Copyright © 2011-2022 走看看