Selenium:我如何获得图像的src?

时间:2011-08-30 14:40:19

标签: image selenium

我正在使用Selenium(在PHPUnit中)来测试我的Web应用程序。我想测试页面上存在的某个图像是否确实存在。更确切地说,图像URL是否返回404。为了测试它,我需要获取图像网址。给定图像定位器,如何获取其src属性(其URL)的值?

9 个答案:

答案 0 :(得分:24)

假设您在WebElement中有一个图像(比如说img),在Java世界中你可以检索下面的链接

编辑答案以澄清。 在Java世界中,我指的是Selenium 2.0 Java绑定。在Selenium 2.0中(当然如果你使用的是webdriver)有一个名为WebElement的类,表示页面上的元素。 getAttribute是Java绑定中的selenium方法。

String url = "http://www.my.website.com";
WebDriver driver = new FirefoxDriver();
driver.get(url);
WebElement img = driver.findElement(By.id("foo"));
String src = img.getAttribute("src");

也许PHPUnit中有类似的内容

答案 1 :(得分:3)

您可以在XPath中使用'getAttribute'来获取图像src(或任何其他属性:alt,title,width等)

selenium.getAttribute("//img/@src");

答案 2 :(得分:3)

下面的代码将帮助您获取所有图片及其网址的列表。 您也可以在 img 上使用 脚本 来获取javascript文件列表。


    package seleniumlinkpackage;

    import java.util.List;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class xmenfirstclass {
    public static void main(String[] args) throws InterruptedException {

        String url = "Paste Your URL here";
        WebDriver driver = new FirefoxDriver();
        driver.get(url);

        List links=driver.findElements(By.tagName("img"));
    // this will display list of all images exist on page
        for(WebElement ele:links){
            System.out.println(ele.getAttribute("src"));
        }

            //Wait for 5 Sec
            Thread.sleep(5);

            // Close the driver
            driver.quit();
        }

    }

答案 3 :(得分:0)

如果您使用的是facebook/phpwebdiver之类的任何PHP网络驱动程序,那么它将很容易解决您的问题。

示例:

1)创建一个wedriver对象:

public function setUp()
{
parent::setUp();
$web_driver = new WebDriver();
$element = $web_driver->session();
}

使用此$element变量,您可以使用以下行轻松访问任何HTML属性:

$element->element('xpath', '//*[@id="logo"]')->attribute('src');

这将返回src attibute的值。您可以使用此行来获取类,id,title,alt等任何属性......

答案 4 :(得分:0)

您需要使用XPath。对于PHPUnit和Selenium,获取图像的src属性的语法是:

$imageUrl = $this->getAttribute("//img/@src");

答案 5 :(得分:0)

你必须使用

  

storeAttribute

在目标地点,你必须提到这样的

  

// IMG [@src =' imagename.png&#39]。@ SRC

将变量存储在变量中

  

IMG

现在使用

验证
  

verifyAttribute

例如:command:

  

verifyAttribute

目标:

  

// IMG [@src =' imagename.png'] @ SRC

值:

  

$ {IMG}

答案 6 :(得分:0)

好吧,在chrome中,可以用Java编写代码以获取图像src的列表

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;


public class imageUrl {
    public static void main(String[] args) {

                //Create Driver-object for chrome browser
                System.setProperty("webdriver.chrome.driver","//Users//admin//Desktop//chromedriver");
                WebDriver driver = new ChromeDriver();

                //get the page
                driver.get("https://jet.com/");

                // this will find the elements by tag name. Don't forget to write "WebElement" after List.
                //or else it will give an error on the for loop

                List<WebElement>links=driver.findElements(By.tagName("img"));

                // this will display list of all images exist on page
                for(WebElement ele:links){
                    System.out.println(ele.getAttribute("src"));
                }
    }

}

答案 7 :(得分:0)

driver.findElement(By.cssSelector(“ img”))。getAttribute(“ src”)

答案 8 :(得分:-3)

使用xPath,例如

//img[@src='The image src']

但不幸的是,我不确定这是测试图像是否加载的好方法