如何像使用 Chrome 开发者控制台那样使用 querySelectorAll select 正确的元素?

How do I select the right elements with querySelectorAll as I do by using the Chrome developers console?

我目前正在使用 cypress 测试 salesforce,我 运行 遇到了某种情况,我不知道将在机会中创建它的派对记录 ID。这意味着我必须找到 select 特定派对记录的解决方法才能编辑文件。

如果我使用 Chrome 工具或在 cypress 中执行以下操作,我可以调用该元素,但它不会打开或单击任何内容:

       cy.document().then((doc) => {
                const edit = doc.querySelectorAll("a")[41]
                const click = doc.querySelectorAll("a")[42]
                edit.click()
                click.click()

            })

问题是cypress没有点击,无法前进。有谁知道我们在这些情况下可以做什么?

这是向下箭头元素:

您可以使用 each() 遍历所有下拉菜单并根据索引执行 click() ,例如:

cy.get('svg[data-key="down"]').each(($ele, index) => {
  if (index == 2) { //For second down arrow 
    cy.wrap($ele).click() //Clicks the second down arrow
    //Do Something else
  }
})

如果正常点击不起作用,您可以使用 click({force: true})

或者,如果上面的方法不起作用,那么我想你有那么你必须使用 shadow() 进入阴影 dom 然后执行 click() -

cy.get('svg[data-key="down"]').each(($ele, index) => {
  if (index == 2) {
    cy.wrap($ele).shadow().find('svg#down').click()
    //Do Something else
  }
})

您可以使用eq()直接获取第二个下拉菜单并对其执行click()。

cy.get('svg[data-key="down"]')             // select all dropdowns
  .eq(1)                                   // select the second
  .click();

或者您可能需要定位 <use href...> 元素,

cy.get('svg[data-key="down"]')             // select all dropdowns
  .eq(1)                                   // select the second
  .find('use')                             // since this element has the href
  .click();