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

xPath文本包含Selenium Web驱动程序

阎佑运
2023-03-14

我正在尝试根据其文本内容选择一个元素。我正在使用XPath来实现这一点。

我只是感到困惑,这应该有效吗?

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]")); 

我甚至会复制HTML代码:

<div class="linkWrap noCount">Notifications&nbsp;<span class="count _5wk0 hidden_elem uiSideNavCountText">(<span class="countValue fsm">0</span><span class="maxCountIndicator"></span>)</span></div>

div元素内部有“通知”字样。那么为什么它不起作用。

转到Facebook上的此页面:https://www.facebook.com/settings

使用此chrome扩展通过xPath突出显示任何区域。

共有2个答案

督烨赫
2023-03-14

在这个社区一些了不起的人的帮助下,我发现了这个问题。

好的,我的元素在一个iFrame中。

为了访问元素,我必须首先访问iFrame

WebElement iframe = obj.driver.findElement(By.xpath("//iframe[@tabindex='-1']"));
    
obj.driver.switchTo().frame(iframe);
史朗
2023-03-14

“通知”一词前面有一个空格:

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]"));    

在尝试查找元素之前,还应该添加等待元素:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(text(), 'Notifications')]"));

WebElement link = obj.driver.findElement(By.xpath("//div[contains(text(), 'Notifications')]")); 
 类似资料:
  • 我正在使用selenium在html页面上执行测试。我只能使用xpath来定位元素。我试图创建一个xpath,它允许我定位所有包含文本的div,这样我就可以用findElements保留这些WebElement的引用,不管它是什么,只要它不是空的。所以我有了这个xpath: //div[5]/div/div[2]

  • 上面的XPath查询捕获了我正在查看的特定部分中的所有文本,这很棒。但是,我只需要知道testuser是否在那个部分。

  • 按钮超文本标记语言代码我将如何编写命令来单击按钮的xpath? Xpath是 是吗

  • 问题内容: 我试图单击此页面上的元素: 在这一点上,我想单击“现金流量”,“资产负债表”或“季度”。我知道这些按钮已加载,因为我可以使用BeautifulSoup从页面源中提取它们。但是,当我尝试使用Selenium时: 全部返回“无法定位元素”,除了“季度”返回一个元素,但它位于图上方的一个元素而不是我感兴趣的表格上方的一个元素。 我认为这是由于位于错误的iframe中,而我找到了所有ifram

  • 问题内容: 如果我搜索单个字符串,则效果很好: 但是我可以在下面的示例中有一个 or 语句吗? 问题答案: 在两个函数调用之间说 或使用函数使xpath不区分大小写

  • 问题内容: 我正在使用此链接制作一些docker- compose yml文件。在此配置中,顶层卷中的driver:local的含义是什么? 问题答案: 它是音量驱动程序,相当于 表示esdata1和esdata2卷是在运行容器的同一Docker主机上创建的。通过使用其他Volume插件,例如 您可以在外部主机上创建卷并将其装入本地主机,例如。因此,当您的容器写入时,它实际上是通过网络写入外部磁盘