Невозможно найти изображение gif по Xpath / classname / cssSelector с помощью веб-драйвера selenium java - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь найти изображение с помощью веб-драйвера Selenium, но не могу найти его с помощью Xpath / cssSelector

Я пробовал cssSelector и xpath, но не работает.

<img alt="" class="i-amphtml-fill-content i-amphtml-replaced-content" decoding="async" src="https://tpc.googlesyndication.com/simgad/303052068860032968">

С помощью cssSelector ->

WebElement elementOut = driver.findElement(By.cssSelector(".i-amphtml-fill-content.i-amphtml-replaced-content"));

По Xpath ->

WebElement elementOut = driver.findElement(By.xpath("//*[@id='aw0']/amp-img/img"));

Мне нужно найти изображение.

Снимок источника страницы:

Detailed page source

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Ваше изображение находится в iframe

enter image description here

Таким образом, вам нужно будет выполнить функцию driver.switchTo () , прежде чем пытаться найти элемент, который находится внутри iframe.

После этого вы сможете использовать выражение XPath , например:

driver.findElement(By.xpath("//img[contains(@class,'replaced-content')]"));
0 голосов
/ 29 мая 2019

К click() на изображении, поскольку требуемый элемент находится в пределах <iframe>, поэтому необходимо:

  • Индуцировать WebDriverWait для требуемого frameToBeAvailableAndSwitchToIt .
  • Induce WebDriverWait для требуемого elementToBeClickable .
  • Вы можете использовать любой из следующих локаторовСтратегии :

    • cssSelector:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[id$='com/Web/News24/Homepage_20'][name^='google_ads_iframe_'][title='3rd party ad content']")));
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("img.i-amphtml-fill-content.i-amphtml-replaced-content[src^='https://tpc.googlesyndication.com/simgad']"))).click()
      
    • xpath:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[contains(@id, 'com/Web/News24/Homepage_20') and starts-with(@name, 'google_ads_iframe_')][@title='3rd party ad content']")));
      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//img[@class='i-amphtml-fill-content i-amphtml-replaced-content' and starts-with(@src, 'https://tpc.googlesyndication.com/simgad')]"))).click();
      
...