我想在网页中找到image
标签。该应用程序包含一个VIEW ICON。检查视图图标时,它被编码为image
标签。我不确定如何找到该特定标签。
下面是我要定位的图像标签:
<svg width="1em" height="1em" class="user-dropdown-icon" viewBox="0 0 14 8">
<image data-name="Vector Smart Object copy 3" width="14" height="8" xlink:href="data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAICAYAAADJEc7MAAAAx0lEQVQYlY2Pv2oCAQyHP//s9waZfIF7j+PG3nbDFQfB7ufaxV3c3BxcFaRduzj5GL/Z5Tr0j1AoKZGeoGggEJLvI0mnqqoDsDCzCXeEpCkw7AJroJb0fEsLpnanl6bpKzAAxk3TfCdJsrsiueDiCnjsmtkPUAIbYCrp6YLkPT/RmdIdP5WQC2ALzCSNWpLXs5gVwdI/AWZ2lOTyCzCX9B6jOfAGPDhz4v82tuRPIAP8z2Wk15mZfbXZMzHkDyAH9pF59P4D+AX710oK5f6gzQAAAABJRU5ErkJggg=="></image>
</svg>
我尝试了以下xpath:
xpath="(//*[@class='user-view-icon'])[11]")
但是没有成功
我要找到视图图标
答案 0 :(得分:1)
尝试一下:
硒-Java
/*get element by tag name*/
WebElement image = driver.findElement(By.tagName("image"));
如果页面上有多个图像,请使用
/*get all elements by tag name*/
List<WebElement> images = driver.findElements(By.tagName("image"));
从上面的列表中确定要使用哪一个(提示:使用foreach循环进行迭代)
答案 1 :(得分:1)
<image>
<image>
SVG元素包括SVG文档中的图像。它可以显示raster image个文件或其他SVG文件。
SVG软件必须支持的唯一图像格式是JPEG,PNG和其他SVG文件。动画GIF行为未定义。
用<image>
显示的 SVG文件是treated as an image:外部资源,没有加载,:visited样式为aren't applied,并且不能交互。要包含动态SVG元素,请尝试将<use>
与外部URL一起使用。要包含SVG文件并在其中运行脚本,请在<object>
内尝试<foreignObject>
。
注意:HTML规范定义为解析HTML时的同义词。此特定元素及其行为仅适用于SVG文档或内联SVG。
由于<image>
元素是 SVG 元素,因此要定位此类元素,您必须在使用SVG namespace来访问元素时明确指定xpath,如下所示:
对于<svg>
元素:
//*[name()="svg"]
对于<g>
元素:
//*[name()="svg"]/*[name()="g"]
对于<image>
元素:
//*[name()="svg"]/*[name()="image"]
您可以在以下位置找到几个相关的详细讨论:
答案 2 :(得分:0)
您的图片没有分配“ user-view-icon” CSS类,并且XPath不起作用。
您可以这样做:
WebElement image = driver.findElement(By.cssSelector("svg.user-dropdown-icon > image"));
答案 3 :(得分:0)
请执行下面的代码,让我知道您得到了什么。 System.out.println(driver.findElements(By.tagName(“ image”))。size());
如果仍然出现空指针异常,则驱动程序对象有问题。如果在页面上找不到图像标签,则此代码应返回0,否则应返回该页面上图像标签的数量
根据图像标签的数量,可以确定要单击的图像标签的索引,然后在该元素上执行单击