当前位置: 首页 > 知识库问答 >
问题:

我在java中使用selenium识别元素时遇到了问题

司徒嘉祥
2023-03-14
<a id="newSearchNavigateHeadingEventId_0" class="search-heading" ng-href="book/event?eid=757231&amp;" target="_self" href="book/event?eid=757231&amp;">
<h2 ng-bind="event.EventDisplayName" class="ng-binding">Makerspace Docklands - Safety Induction</h2>
</a>
WebElement we = myDriver. findElement(By.linkText("Makerspace Docklands - Safety Induction"));
WebElement we =  myDriver.findElement(By.id("newSearchNavigateHeadingEventId_0"));
WebElement we =  myDriver.findElement(By.xpath( " //a[@id='newSearchNavigateHeadingEventId_01']  "));
WebElement we =  myDriver.findElement(By.xpath("//a[text()='Makerspace Docklands - Safety Induction']"));
WebElement we =  myDriver.findElement(By.xpath("//a[@href='book/event?eid=757231&amp;']")) ;

但我一直收到下面的信息...

org.openqa.selenium.NoSuchElementException: Unable to locate element: ....

有人可以建议什么是正确的路径,这样我就可以点击链接:

we.click();

共有1个答案

谷梁浩思
2023-03-14

要将带有文本的元素标识为Makerspace Docklands-Safety Instantion,您可以使用以下任何一种定位器策略:

>

  • csssselector:

    WebElement we = driver.findElement(By.cssSelector("a.search-heading[id^='newSearchNavigateHeadingEventId']>h2.ng-binding[ng-bind*=EventDisplayName]"));
    

    XPath:

    WebElement we = driver.findElement(By.xpath("//a[@class='search-heading' and starts-with(@id, 'newSearchNavigateHeadingEventId')]/h2[contains(., 'Makerspace Docklands') and contains(@ng-bind, 'EventDisplayName')]"));
    
    WebElement we = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.search-heading[id^='newSearchNavigateHeadingEventId']>h2.ng-binding[ng-bind*=EventDisplayName]")));
    
    WebElement we = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='search-heading' and starts-with(@id, 'newSearchNavigateHeadingEventId')]/h2[contains(., 'Makerspace Docklands - Safety Induction') and contains(@ng-bind, 'EventDisplayName')]")));
    
      null

  •  类似资料:
    • 你好,我试图选择并点击按钮“立即预订”,但当我查看源代码时,它显示了以下... 当我检查Firefox中的“Book Now”链接时,显示了以下内容 [为什么有两个按钮class=“btn btn-secondary text-大写btn-landing go-to-session”的实例??]

    • 编辑:我刚刚意识到,即使是一个带有应用程序条的简单屏幕,也会发生这种情况 错误:任务“:app:checkdebugaarmadata”的执行失败 无法解析配置“:app:debugRuntimeClasspath”的所有文件。无法解析com。谷歌。firebase:firebase firestore:22.1.2。所需人员:项目:应用程序 无法解析com。谷歌。firebase:firebas

    • 我对硒很陌生。 我尝试构建一个测试来验证网页元素(小图标)是否显示在页面上。 因此,在我的类的顶部,我通过xpath定义了Web元素。 Xpath我在应用右键单击元素并单击检查后从检查中复制。 @通过(xpath=“//*[@id=”referrals“]/tbody/tr[2]/td[2]/div/img[2]”)私有WebElement链和twoarrowsicon查找; 然后在同一个类中,我

    • 我正在尝试使用amazon rekognition和kinesis执行人脸检测和识别。我正在使用位于本地网络上的IP摄像头 根据AWS文件,我做了以下工作: 1.-在本地计算机(ubuntu 18)上。我已经使用“C生产者库”将数据发送到“Kinesis视频流”。我可以在名为“示例流”的“Kinesis视频流”中观看ip摄像机的视频 2.-我使用“EC2”服务创建了一个“t2.micro”实例。在

    • 我的合并排序算法无法正常工作。代码在下面,但是我简单总结一下我试过的,我知道的代码没有错的地方。 函数将指向数组的指针和数组的大小作为参数。如果数组的大小小于2,它会立即返回。我确信这是有效的,因为我调试了这部分几次。它返回了8次,这是我期望它做的。接下来,创建一个变量作为索引来拆分数组。我测试了它,我很有信心在所有递归中都是正确的。然后,创建两个数组,第一个数组包含索引…中的元素,第二个数组包含