Selenium:这个 http://www.salesfoce.com/ 上没有这样的元素异常,即使认为该元素存在

Selenium: No such element exception is getting on this http://www.salesfoce.com/ even thought that element exists

我正在尝试查找元素 By.cssSelector("#e1")。在这个网站上:SALESFOCE.COM.

我试图在第一个按钮(下图)上找到一个元素,它是 <div>

从 java 开始,我尝试了 By.xPath 和 By.cssSelector,但每次我都得到 没有这样的元素异常 。 我也使用了隐式和显式等待仍然得到相同的异常。

但是如果我发现使用 inspect element 而不是突出显示该元素。

元素 Salesforceiframe 下您需要先切换到 iframe 才能访问该元素。

使用WebdriverWait()并等待frameToBeAvailableAndSwitchToIt()并使用以下定位器进行识别。

使用WebdriverWait()并等待elementToBeClickable()并使用以下定位器进行识别。

driver.get("http://ww1.salesfoce.com/")
new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("#rs>iframe")));

new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Salesforce']"))).click();

文本为 Salesforce 的元素在


解决方案

要在 website 中单击文本为 Salesforce 的元素,您必须:

  • 为所需的 frameToBeAvailableAndSwitchToIt.
  • 引入
  • 为所需的 elementToBeClickable 引入
  • 您可以使用以下任一项
    • 使用 xpath:

      driver.get("http://ww1.salesfoce.com/");
      new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[starts-with(@src, 'https://www.google.com/afs/ads?adtest')]")));
      new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Salesforce']"))).click();