【问题标题】:I would like to identify the correct code for the button highlighted in yellow我想确定以黄色突出显示的按钮的正确代码
【发布时间】:2026-02-10 15:40:01
【问题描述】:

我该如何解决这个问题?我是 Selenium 的新手。

<div id="InVivoVitroWorkcheckboxDiv" class="btn-group" data-toggle="buttons">
  <div class="btn btn-default"> <input class="vivovitrocls" type="checkbox" name="SelectedInVivoVitroWork" value="In Vivo Animals"> In Vivo Animals<span class="glyphicon glyphicon-ok"></span></div>
  <div class="btn btn-default"> <input class="vivovitrocls" type="checkbox" name="SelectedInVivoVitroWork" value="In Vivo Humans"> In Vivo Humans<span class="glyphicon glyphicon-ok"></span></div>
  <div class="btn btn-default"> <input class="vivovitrocls" type="checkbox" name="SelectedInVivoVitroWork" value="In Vitro Work"> In Vitro Work<span class="glyphicon glyphicon-ok"></span></div>
  <div class="btn btn-default"> <input class="vivovitrocls" type="checkbox" name="SelectedInVivoVitroWork" value="NA"> N/A<span class="glyphicon glyphicon-ok"></span></div>
</div>

【问题讨论】:

  • 抱歉,如果帖子混淆了。我正在尝试设置单击附加的“体外工作”按钮,但我无法做到这一点。当我尝试 obj.FindElementById("InVivoVitroWorkcheckboxDiv").Click 它点击“In Vivo Humans”按钮,但我想点击“In Vitro Work”。抱歉,如果格式不正确。感谢您在这方面的帮助

标签: excel vba selenium-webdriver checkbox selenium-chromedriver


【解决方案1】:

您单击 In Vivo Humans 的原因是,您没有识别 4 个复选框中的任何一个,而是您已经识别了包含所有 4 个复选框的父 Div。由于 In Vivo Humans 位于 div 中间,因此点击此处。

要正确单击任何复选框,您必须为此编写唯一定位器。例如如果你想点击in Vitro work,ypu可以编写唯一的xpath locator:

VBA:

Dim obj as new webdriver
obj.start "Chrome"
obj.get "file:///C:/Users/rahul/OneDrive/Desktop/abc.html"
obj.FindElementByXPath("//div[input[@value='In Vitro Work']]").Click

Python

from selenium import webdriver
driver = webdriver.Chrome('..\drivers\chromedriver')
driver.get("file:///C:/Users/rahul/OneDrive/Desktop/abc.html")
driver.maximize_window()
driver.find_element_by_xpath("//input[@value='In Vitro Work']").click()

Java

System.setProperty("webdriver.chrome.driver","C:\\user\\rahul\\chromedriver.exe");  
WebDriver driver=new ChromeDriver();
driver.get("file:///C:/Users/rahul/OneDrive/Desktop/abc.html");
driver.findElement(By.xpath("//input[@value='In Vitro Work']")).click();

输出:

您可以通过下面的帖子了解更多关于使用 selenium webdriver 唯一定位元素的信息。 https://www.browserstack.com/guide/locators-in-selenium

【讨论】:

  • 嗨,Rahul,非常感谢您抽出宝贵时间回答我。非常感激!感谢您帮助我使用定位器。我认为即使我到达正确的位置,我也会收到以下错误消息 - Selenium 错误元素单击被拦截:Element 在点 (304,507) 处不可点击。其他元素会收到点击:
    ...
  • 我也尝试过等待页面完全加载并最大化窗口,但一切正常,不知道哪里出错了
  • @Tikku 由于您的输入标签位于 Div 标签内,因此可能会引发错误。您可以将输入标签包装在 div 中,如下所示: //div[input[@value='In Vitro Work']] 我已经更新了 VBA 代码,现在试试。
  • 这真是太棒了,伙计!它就像一种魅力,还帮助我解决了其他一些按钮。你刚刚解决了我的头疼问题。无论你做什么,我都对你致以最良好的祝愿。非常感谢,祝您有美好的一天!问候,
  • 顺便说一句,我不知道如何关闭这个线程,这已经解决了。干杯
【解决方案2】:

这段代码对我有用:

from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

driver.get(r"C:\tmp\seltest.htm")

driver.find_element_by_xpath("//*[@id='InVivoVitroWorkcheckboxDiv']/div[2]/input").click()  

输出(无类)

【讨论】:

  • 对不起,伙计,首先他要求使用 VBA 解决方案(请参阅标签),并且他想选择 InVitro Work 复选框而不是 Vivo 工作。
  • 感谢 @Mike67 抽出宝贵时间帮助我,但我正在开发 VBA,不幸的是,即使我尝试使用您的 XPath,我也会收到以下错误“Selenium error element click intercepted”。跨度>
最近更新 更多