使用se webdriver替换网页中的图像

时间:2018-10-28 18:56:54

标签: java selenium

我想替换网页中的某些图像。 我用来查找图像的代码是:

black-passport-c-yo-cover

现在我正尝试用JavaScriptExecutor替换图像

 List<WebElement> elements = driver.findElements(By.xpath("//div[@jsname='pCbVjb']//button[@jsname='WR0adb']//img[contains(@srcset, 'https://lh3.googleusercontent.com')]"));
int size=elements.size();

所以我正在从excel表中读取要替换的图片的数据 但是我无法替换图像。

那我需要传递来自表的要替换的图片的参数是什么?

如果我要对其进行硬编码,则可以正常工作,但我想使其动态化。

请帮助我。

1 个答案:

答案 0 :(得分:0)

没有足够的细节来提供适当的解决方案,但这是我认为可以带给您的解决方案。

  1. 您有2个动态元素:元素本身和链接,因此需要在脚本中传递2个参数:元素和要注入的值
  2. 您需要一个循环而不是elements.get(0)

因此脚本通常如下所示:

List<WebElement> elements = driver.findElements(...));
JavascriptExecutor js = (JavascriptExecutor) driver;

for( WebElement element : elements ) {
   // get next image, not sure how you do it;
   String nextImage = getNextImageToBeReplacedURL();
   js.executeScript("arguments[0].setAttribute('srcset' , arguments[1])", element, nextImage );
}

其中getNextImageToBeReplacedURL返回来自Excel的动态值。