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

图一 选中三个的时候
.

图二 选中两个的时候
.
.
. - 想要实现的效果:
通过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
.

.
(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();.

.
.
.
.
.
.
.
.
.
.
6.我的问题:
怎样能点击实现点击,最终只要能选中那三个复选框的内容就可以。
.
.
.
.
.
.
.
.
.
.
不知道你这个问题是否已经解决, 如果还没有解决的话:
- 以下回答来自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复选框的解决方案。需要注意的是,网页的元素结构和属性可能因网站的不同而有所不同,需要结合具体情况进行分析和调整。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
可以试试这种
1.
b = driver.find_element(By.XPATH,'//span[text()="创 建"]')
driver.execute_script("arguments[0].click();",b)
2.
或者直接定位“复选框”\“GPS”文字的坐标点,然后根据坐标点设定点击
kw2 = driver.find_element(By.XPATH, '/html/body/section/section/section/main/div/div/div[1]/div[2]/form/div[5]/div/button[2]')
kw2_x = kw2.location.get('x')#百度搜索框的x坐标
kw2_y = kw2.location.get('y')#百度搜索框的y坐标
print(kw2.location, ',kw2_x = ', kw2_x, ',kw2_y = ', kw2_y)
ActionChains(driver).move_by_offset(1398, 247).click().perform() # 鼠标左键点击,1398为x坐标, 247为y坐标
ActionChains(dr).move_by_offset(200, 100).context_click().perform() # 鼠标右键点击