【问题标题】:How to Write a cssSelector for the complex jQuery selector below如何为下面的复杂 jQuery 选择器编写一个 cssSelector
【发布时间】:2019-09-26 05:03:42
【问题描述】:

我有下面的 jQuery 选择器。我用浏览器开发者控制台的数据检查它。

jQuery("iframe#msg_body").contents().find("html body div span").text()

我需要在 selenium 中将它用于 cssSelector。 例如如下格式

By expectedOutput  = By.cssSelector(The_expression_I_need);

谁能告诉我怎么做?

【问题讨论】:

  • 你确定你的问题与java有关吗?
  • 您不能通过 CSS 选择器执行此操作,因为 CSS 不会跨帧。但是,Selenium 似乎确实有其他方法,例如:stackoverflow.com/questions/24247490/…
  • 首先您需要将 WebDriver 移动到 iframe:driver.switchTo().frame("msg_body");,然后使用 WebDriver 查找元素并获取文本:driver.findElement(By.cssSelector("html/body/div/span")).getText();
  • @KunLun 这不是 CSS 选择器。那是一个 XPath。
  • @JeffC 是的,我的错。应该是driver.findElement(By.xpath("html/body/div/span")).getText();

标签: java jquery selenium selenium-webdriver css-selectors


【解决方案1】:

正如 Rory McCrossan 所说,您不能只使用 CSS 选择器访问元素,因为它位于 iframe 中。

您必须切换到 iframe 并搜索元素。

new WebDriverWait(driver,30).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("msg_body"));
By expectedOutput = By.cssSelector("html body div span");

然后你可以使用定位器获取元素。

定位器将返回body标签内的div标签内的所有span标签。所以我猜它很可能会得到不止一个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2015-01-25
    • 2011-03-10
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多