【问题标题】:Get page element by title attribute - Selenium and Java通过标题属性获取页面元素 - Selenium 和 Java
【发布时间】:2015-09-24 23:31:06
【问题描述】:

我正在尝试获取标题中包含“收藏家”一词的图像并单击它。 这是图像及其链接的 html 代码:

<a href="javascript:*command*" title="Level III: KPI Collector RYG of D D/Testing - SYS">
<img src="*unusable link because it's only valid for the specific page*" title="Level III: KPI Collector RYG of D D/Testing - SYS">

&lt;a&gt;&lt;img&gt; 标签嵌套在表格单元格和一些 div 中。我没有编写 html 代码,所以如果它很难看,请不要对我大喊大叫 :p
这是我尝试做的java代码:

WebElement trafficLight = driver.findElement(By.xpath("//img[contains(@title,'Collector')]"));
trafficLight.click();

我得到的错误是:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//img[contains(@title,'Collector')]"}

我很确定 xpath 没问题,所以我认为这不是问题。

【问题讨论】:

  • 检查元素是否在框架内
  • 是的,它似乎在 &lt;iframe&gt; 中。图像位置层次结构是这样的:&lt;ton of divs&gt;->&lt;iframe&gt;&lt;body&gt; -> &lt;table&gt; -> &lt;tr&gt; -> &lt;td&gt; -> &lt;div&gt; -> &lt;span&gt; -> &lt;a&gt; - >&lt;img&gt;。我猜那有不同的获取方式吗?
  • 元素在

标签: java html selenium


【解决方案1】:

由于img WebElement 位于一个框架内,因此您需要先将焦点切换到该框架,然后再对该 WebElement 执行任何操作。您可以使用 WebDriver 的 switchTo() 方法来做到这一点,如下所示:

driver.switchTo().frame(frameLocator);

框架定位器可以是其(从零开始的)索引、名称或 id 属性,也可以是以前定位的 WebElement。

一旦您将焦点切换到所需的框架,您就应该能够使用初始帖子中的相同代码与 WebElement 进行交互。

【讨论】:

    【解决方案2】:

    请试试这个。它会解决你的问题。

    WebElement frameSwitch = driver.findElement(By.xpath("Give iframe Xpath location")); 
    driver.switchTo().frame(frameSwitch); //Switch control to iframe.
    
    //Perform your steps (I.e Click on Image)
    driver.findElement(By.xpath("//img[contains(@title,'Collector')]")).click();
    
    driver.switchTo().defaultContent(); //Come out of iframe.
    

    【讨论】:

      猜你喜欢
      • 2021-02-22
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多