• 解决Selenium中无法点击元素,Selemium使用JS代码 driver.execute_script点击元素


    @FindBy(how = How.XPATH, using = "//*[text()='A1. Approved']")
    private WebElement Approved;
    

    driver.execute_script("arguments[0].click();",Approved)


    这句话的意思是使用 JavaScript 在浏览器中执行一个点击操作,将页面元素 "supportUser" 点击。

    具体来说,"driver.execute_script" 是调用浏览器驱动程序 (driver) 的一个方法,它可以用来在浏览器中执行 JavaScript 代码。"arguments[0].click()" 是一段 JavaScript 代码,它表示调用第一个参数 (即 "supportUser") 的 "click" 方法,这样就可以在浏览器中对这个元素执行点击操作了。

    总的来说,这句话的作用就是通过浏览器驱动程序自动化地执行浏览器中的点击操作。

    如果代码报错:selenium.common.exceptions.InvalidArgumentException: Message: invalid argument

    这可能是由于元素的交互方式或页面的特殊设计导致的。为了解决这个问题,
    我们可以尝试以下三种方案:模拟鼠标操作、模拟键盘操作和通过JavaScript操作。

    1. 模拟鼠标操作

    当无法通过click方法点击元素时,我们可以通过Selenium的ActionChains类来模拟鼠标操作,

    操作步骤:
    # 1.导入ActionChinas类
    from selenium.webdriver import ActionChains
    # 2.实例化ActionChinas对象
    actions = ActionChains(driver)
    # 3.执行鼠标操作,如点击元素
    actions.click(ele).perform()

    代码优化

    import time
    from selenium import webdriver
    from pywinauto.keyboard import send_keys
    # 1.导入ActionChinas类
    from selenium.webdriver import ActionChains
    try:
        dr = webdriver.Chrome()
        dr.get("https://www.baidu.com")
        dr.implicitly_wait(5)
        dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
        ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/input[@type="file"]')
        # 2.实例化ActionChinas对象
        actions = ActionChains(dr)
        # 3.执行鼠标操作,如点击元素
        actions.click(ele).perform()
        time.sleep(3)
        send_keys(keys=r'D:\api_test.jpg')
        send_keys(keys='{ENTER}')
        time.sleep(30)
    except Exception as e:
        raise e
    finally:
        dr.quit()
        
    2. 模拟键盘操作

    如果元素无法通过鼠标点击,我们可以尝试使用键盘操作来触发相应的事件。具体步骤如下:

    导包

    from selenium.webdriver.common.keys import Keys
    在元素发送特定的键盘按键

    element.send_keys(Keys.ENTER)# 模拟回车键

    3. 通过js操作


    如果无法通过鼠标和键盘操作来点击元素,我们可以尝试使用JavaScript来直接操作页面元素。具体步骤如下:

    使用execute_script方法来执行js代码

    driver.execute_script("arguments[0].click();", element)
    百度搜图代码优化

    import time
    from selenium import webdriver
    from pywinauto.keyboard import send_keys
    # 1.导入ActionChinas类
    from selenium.webdriver import ActionChains
    try:
        dr = webdriver.Chrome()
        dr.get("https://www.baidu.com")
        dr.implicitly_wait(5)
        dr.find_element_by_xpath('//span[@class="soutu-btn"]').click()
        ele = dr.find_element_by_xpath('//div[@class="upload-wrap"]/input[@type="file"]')
        # #使用execte_script来来点击。因为无法通过click()点击
        dr.execute_script("arguments[0].click();",ele)
        actions.click(ele).perform()
        time.sleep(3)
        send_keys(keys=r'D:\api_test.jpg')
        send_keys(keys='{ENTER}')
        time.sleep(30)
    except Exception as e:
        raise e
    finally:
        dr.quit()

  • 相关阅读:
    详解Renko图表如何表现价格变动
    云计算与ai人工智能对高防cdn的发展
    【JavaScript 进阶教程】对象新增方法 defineProperty 与 keys 的说明与使用
    uniapp数据可视化页面,引入uCharts开发(这里介绍一下图例的自定义开发,当数据上百条的情况处理)
    【02】ZooKeeper经典应用场景实战一
    Stable Diffusion源码调试(一)
    flask-sqlalchemy 增删改查
    以太坊账户私钥管理之导出、导出keystore 文件
    #AngularJS#简介
    独家揭秘:小程序销售额破千万,他们怎么做到的
  • 原文地址:https://blog.csdn.net/qq_30273575/article/details/133134313