qq_4030 2023-04-19 18:32 采纳率: 0%
浏览 34
已结题

python selenium 点击网页中的input type是hidden元素 一个可见的复选框关联了多个hidden复选框

  1. 情况是这样的:
    “GPS”前面的复选框是一个可见的,点击它,右边会相应出现那三个被隐藏的三个复选框。在不勾选GPS的情况下是看不到那三个复选框的。
    .
    如图所示:
    .

    img


    图一 选中三个的时候
    .

    img


    图二 选中两个的时候
    .
    .
    .
  2. 想要实现的效果:
    通过python的selenium定位点击GPS前面的那个复选框,以达到选中那三个选项的目的。
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .

3.遇到的问题:
通过GPS前面的那个复选款的XPATH定位,点击,但是报错,找不到元素-----selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//[@id="vpopup_1681893240103"]/div[2]/div[1]/div[1]/
.
.
.
.
.
.
.
.
.
.
4.分析可能导致的原因:
(1)一开始怀疑是因为这个页面是在一个新弹出的弹窗上的元素,但可能性不是很大,因为前面也有类似的弹窗是能够点击成功的;
.
(2)接着,发现这个复选框关联了三个复选框,且这三个的input type 是hidden,是最有可能导致不能点击的原因
.
.
.
.
.
.
.
.
.
.
5.尝试解决办法:
(1)尝试用那三个复选框的XPATH来定位,但是报错,元素不可交互-----selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
.

img


.
(2)也有看到有的回答说可能页面加载时间不够,设置了sleep时间从3s,5s,10s都试了还是报上面相同的错误;
.
(3)网上找到类似的案例说是用JS操作,但是报错,无效的元素状态---selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Failed to execute 'evaluate' on 'Document': The string '//
[@id="codeNames"].click();
.

img


.
.
.
.
.
.
.
.
.
.

6.我的问题:
怎样能点击实现点击,最终只要能选中那三个复选框的内容就可以。
.
.
.
.
.
.
.
.
.
.

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-20 12:34
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt: 解决方案: 针对该问题,建议使用以下步骤进行解决: 1. 确认页面加载完全后再进行定位元素,可以使用隐式等待或显式等待方式进行等待。下面是使用显式等待的示例代码: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 设置等待时间为10秒 wait = WebDriverWait(driver, 10) # 等待可见复选框出现 visible_checkbox = wait.until(EC.visibility_of_element_located((By.XPATH, 'xpath_of_visible_checkbox'))) # 点击可见复选框 visible_checkbox.click() ``` 2. 对于关联的多个hidden复选框,可以使用JavaScript来模拟点击,例如: ```python # 定位需要点击的hidden复选框元素 hidden_checkbox1 = driver.find_element(By.XPATH, 'xpath_of_hidden_checkbox1') hidden_checkbox2 = driver.find_element(By.XPATH, 'xpath_of_hidden_checkbox2') hidden_checkbox3 = driver.find_element(By.XPATH, 'xpath_of_hidden_checkbox3') # 执行JavaScript代码,模拟点击操作 driver.execute_script("arguments[0].click();", hidden_checkbox1) driver.execute_script("arguments[0].click();", hidden_checkbox2) driver.execute_script("arguments[0].click();", hidden_checkbox3) ``` 3. 如果以上方案仍然无法解决问题,可以考虑使用Chrome DevTools中的Element Inspector来检查页面元素的位置和属性,并调整定位元素的方式和路径。 总结: 以上就是使用Python Selenium点击网页中的input类型为hidden的元素,以及如何选中与可见复选框关联的多个hidden复选框的解决方案。需要注意的是,网页的元素结构和属性可能因网站的不同而有所不同,需要结合具体情况进行分析和调整。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月1日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 MATLAB解决问题
  • ¥20 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目