当前位置: 首页 > 知识库问答 >
问题:

如何使用selenium自动化复选框,其检查元素显示为label::before?[重复]

钱均
2023-03-14

复选框-要自动化

上面是要自动化的复选框的图片,检查时显示元素名称为标签::bef矿石。使用id或name只需打开其他链接。请帮助使用硒-Java选择复选框。

共有2个答案

袁开宇
2023-03-14

我对复选框的经验是,你必须点击复选框旁边的标签来设置它们。点击输入将导致OpenQA。硒。ElementNotVisibleException异常。可以按元素获取复选框的状态。选择(C#)或元素。isSelected(Java)但是你不能像点击它那样与它交互。

您可以通过XPath使用文本“//label[contains(text(),'Agree to our')]”或使用“//label[contains(@for,'term1')]”的属性来查找标签

通过使用Action类,使用xoffset=1和yoffset=1,将点击精确定位在标签的左上角,可以避免“使用条款”链接打开的问题。这种精确定位是必要的,因为在HTML中,锚定标记嵌套在标签标记中。我在你的网站上尝试了这个代码,它给出了正确的结果。

在C#中,使用PageObject/PageFactory,解决方案将是:

public class TestPage
{
    private readonly IWebDriver _driver;

    public  TestPage(IWebDriver driver)
    {
        _driver = driver;
        PageFactory.InitElements(driver, this);
    }

    [FindsBy(How = How.XPath, Using = "//label[contains(text(),'Agree to our')]")]
    private IWebElement _labelInputCheckbox;

    public void ClickLabelInputCheckbox()
    {
        var action = new OpenQA.Selenium.Interactions.Actions(_driver);
        action.MoveToElement(_labelInputCheckbox,1,1).Click();
        action.Perform();
    }
}
鲍永春
2023-03-14

您试图单击错误的元素。要单击的元素是右上方的输入

<input name="term1" id="term1" type="checkbox">

只需使用id,term1,就可以做到这一点。

driver.findElement(By.id("term1")).click();
 类似资料:
  • 问题内容: 我有两个div元素。他们每个人都有450px的宽度和高度。如何检查第一个div是否与第二个div重叠? 我尝试使用javascript hittest,但是有点复杂。由于我试图找出其实际工作方式,因此我想从一个简单的代码开始。 我发现可以使用 .getClientRects 来获取元素的边界,但是我不确定如何比较边界。 请给我提意见! 问题答案: 类似这样的东西,并通过getBound

  • 问题内容: 是否可以检查元素的CSS 或使用JavaScript? 问题答案: 元素具有一个属性,该属性可以告诉您想要什么,如果样式是内联声明的或使用JavaScript声明的: 将为您提供一个字符串值。 就像sdleihssirhc在下面说的那样,如果元素是被CSS规则继承或指定的,则需要获取其计算样式:

  • 问题内容: 使用HTML,将创建一个复选框,如下所示: 使用javascript,我们可以选中以下复选框: 现在,我正在尝试使用jquery-mobile创建相同的页面。该复选框如下所示: 为什么这里没有呢?是这个名字吗?我应该删除属性名称并使用名称创建一个吗? 如何在此处使用Javascript / jQuery选中此复选框? 我尝试了上面的代码,但似乎不适用于此复选框。 问题答案: 您需要使用

  • 我在Selenium中找不到此网站上的复选框 我尝试过:Xpath、ID、类型、操作键、文本和部分文本。我已经能够发送密钥(用户和密码)并找到user/pass元素。 > #检查框-标签-边距 提前谢谢你的帮助,我觉得我好像在兜圈子。

  • 我正在编写一个Typescript/Productor测试,它需要评估和选择网格上的复选框元素。这些复选框缺少ID。因为我可以获得与这些复选框位于同一行的输入元素的句柄,所以我尝试通过元素查找器(by.id、by.xpath和by.css)的组合来获取它们。但我的尝试失败了。 我想写的是一个小函数,它将根据行上的远程“兄弟”元素和行上的复选框索引,从行中返回目标复选框元素。我已经尝试了几件事,我认

  • 问题内容: 我要做的是,如何在显示警报框后的特定秒数内自动隐藏它? 我所知道的是 不需要这个,我想在几秒钟内显示警报后消失。 所需方案: 显示警报 在2秒内隐藏/终止警报 问题答案: 警报无法实现此功能。但是,您可以使用div 像这样使用: