当前位置: 首页 > 面试题库 >

CSS定位器选择反应问题

田文景
2023-03-14
问题内容

我的CSS定位器有问题。我为父母有一个独特的标签,从那里我可以得到所需的孩子。

@FindBy(css = "[data-qa="select-Seller"] .select__value-container")
Webelement seller;
public Webelement getSeller(){ return seller; }

该类与所有下拉列表相似,因此唯一会改变的值是data-qa。另外,有时我需要取消选择它们。

为此,我有一个X定位器。

@FindBy(css = "[data-qa="select-Seller"] [data-qa=icon-x]).

如您所见,第一部分仍然相同。

所以我的问题是是否有可能编写一些方法(或任何其他方式)来更改定位器的最后一部分?我有600多个下拉菜单,并且为600个新定位器创建了一个目标,X这使我发疯。

对我来说,执行类似操作的最佳方法是element.click\sendkeys\...\使用默认部分(带有.select__value- container),但是如果我编写类似内容element.deselect,它将更改定位器,但我不知道如何操作。

我写了这样的东西:

public void clearDropdown (WebElement element){
        String selector = element.toString();
        selector = selector.split(" ")[8];
        driver.findElement(By.cssSelector(selector + " [data-qa=icon-x]")).click();
    }

[[ChromeDriver:MAC上的Chrome(99c7e4e38147c9f61da0c83c5ef1b992)]- >
css选择器:[data-qa =’select-Seller’] .select__value-container]
-这就是为什么“
split(”“)[8]”

但是我认为这不是解决问题的正确方法。

谢谢您的建议。


问题答案:

您的方法具有正确的想法,clearDropdown()只有一种更有效的方法可以达到目标。

卖方将改为母公司,例如

@FindBy(css = "[data-qa='select-Seller']")
Webelement sellerParent; // probably needs a better name

然后,您将基于父元素为要获取或与之交互的每个元素定义一个方法。

public void clearDropdown(WebElement element)
{
    element.findElement(By.cssSelector("[data-qa=icon-x]")).click();
}

// probably needs a better name
public WebElement getChild(WebElement element)
{
    return element.findElement(By.cssSelector(".select__value-container"));
}

现在你就这样称呼它

clearDropdown(sellerParent);

要么

WebElement seller = getChild(sellerParent);

您想要的任何父元素。



 类似资料:
  • 主要内容:1. 通用选择器,2. 标签选择器,3. ID 选择器,4. 类选择器,5. 后代选择器,6. 子选择器,7. 相邻兄弟选择器,8. 通用兄弟选择器,9. 分组选择器,10. 属性选择器选择器由 HTML 元素的 id、class 属性或元素名本身以及一些特殊符号构成,用来指定要为哪个 HTML 元素定义样式。选择器是 CSS 样式规则中重要的组成部分,我们可以将选择器看作是 CSS 样式与 HTML 元素之间的匹配模式,与选择器关联的样式规则会应用于选择器所指定的 HTML 元素上。

  • 我想在react中处理选择的事件,示例如何在普通JS中工作。 因此我为选择创建了react组件:

  • 和画画一样,我们需要改变局部物体的颜色,我们首先需要定位到那里,有时候我们需要把所有的云朵填充成白色,有时候又需要在某个云朵上加上特别的金色。 类似的,CSS选择器就是用来定义我们想要改变哪些(或哪个)元素的样式。 按定位粒度来分,从大到小有通用标签、类(class)、id以及一些混合选择器。下面我们一一介绍。 通用标签(tag)选择器 使用标签名称可以定位所有的同名标签元素 a{ /* 链接 *

  • 我正在使用一个基于Symfony的react应用程序,并试图使用react-datepicker模块包含一个datepicker。 我可以创建datepicker对象,但它的样式似乎不正确——当我单击选择日期时,页面顶部只有一个垂直的数字列表(我看到很多人在网上经历过这种情况,通常是因为他们没有导入datepicker css)。 我正在导入react-datepicker.css文件,如果我在浏

  • 问题内容: 我有以下CSS: 我想使用jQuery更改顶部,左侧和底部边框的边框宽度。我使用什么选择器访问该元素?我尝试了以下方法,但似乎没有用。 问题答案: 您无法操作,因为从技术上讲,它不是DOM的一部分,因此任何JavaScript都无法访问它。但是您 可以 添加具有指定的新类的新类。 CSS: JS: 更新: 虽然不可能 _直接_修改内容,但是有一些方法可以使用JavaScript读取和/

  • 问题内容: 问题: 无法从CSS选择器特定元素中选择。需要验证注册用户是否可以成功更改其密码。我试过了类的不同属性来调用它。当尝试前两个示例时,结果是方法中的异常错误。最后的尝试将调用第一个类实例并重置密码字段(失败)。 尝试过: 目的: 我需要选择共享同一班级的项目。如下所示,该类是共享的。 问题答案: 编辑:因为选择器需要一个,或,但是它们本身都不是。 提供要匹配的类名,并从那里指定要选择的特