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

标签中包含的文本等同于特定文本,而不仅仅包含特定文本[duplicate]

谷泽宇
2023-03-14

我的问题是:我有两个标签。

<div class='twoLink'
<a class='link' <div> microsoft word </div></a>
<a class='link' <div> word </div></a>
</div>

我的目标是单击只包含单词“word”而不包含“microsoft word”的标签。

所以我做了这个:

element = 'word'
linkWord = WebDriverWait(driver, timeout=5).until(EC.element_to_be_clickable(
         (By.XPATH,"//a[contains(@class, 'link')]/div[contains(text(), '"+ element +"')]")))
         driver.execute_script("arguments[0].click();", linkWord )

但是这种方法让我点击包含“单词”的标签,而不等于“单词”,所以我点击的标签是第一个,而不是我想要的第二个。

我必须找到一种方法来检查等式,但我没有找到。

我能怎么办?

共有2个答案

安博文
2023-03-14

这里有一种方法,你可以断言这个词是否存在。我注意到您使用的是contains,因为元素DOM中的单词word前面有一个空格,但是contains正在获取microsoft word,因为它包含word。所以,下面的方法是有效的。为了清楚起见,我在条件语句中添加了断言,但实际上可以将其缩减为一行assert x=='word',“not the right word”

x = driver.find_element(By.XPATH, "//div[@class='twoLink']//following-sibling::a").text
print(x)
if x == 'word':
    print("True")
    assert True
else:
    print("False")
    assert False

输出:

word
True

Process finished with exit code 0

这也起作用:

//a[@class='link' and text()=' word ']

还有一个策略是使用规范化。如果你想使用它,请研究一下。这是标准化的空间定位器。这将为您找到您的元素:

//a[normalize-space(text()='word')]

平和雅
2023-03-14
//a[@class='link']/div[text()='word'] 

这简直是

f"//a[@class='link']/div[text()='{element}']"

删除contains(),然后使用text()比较

 类似资料:
  • 我正在寻找一些关于如何编写Xpath查询以验证特定复选框是否被选中的指导(嵌套在panel-body div中的div是复选框)。我试图做的是确保包含文本“evaluations”的相应标签的checkbox div包含类“Checked”。以下是我的HTML: 下面是我的XPath: 问题是,即使该框未选中,我的测试用例仍然通过,这表明我的xpath正在抓取其他元素。panel-body div

  • 我使用PDFBox 1.8.8并尝试将新文本添加到现有的pdf文件中,问题是我添加的文本正在寻找此特定pdf的压缩 原始pdf(我认为这个文件是问题的根源) (它正在为其他PDF工作)。 问题的图像与解释 它最初并没有显示出来,但我修复了这个问题(设置字体显示模式) 我在使用pdf矩阵,检查了几乎所有的东西。。。我不知道该怎么解决这个问题。。。 问题: 1)是否有任何方法来强制pdfbox使用正常

  • 我对Xpath有问题。我试图查找div第一次迭代的所有文本节点,但排除其中包含关键字的节点。 一个简单的例子: 我想从第一个div“blabla”中获取所有文本,但排除所有包含“bananas”一词的段落。在这种情况下,我只想要“我也喜欢苹果”。段落数和单词“bananas”的位置是随机的。 以下是我尝试过的: 我不知道为什么这样不行。如果有人有想法,我们将不胜感激!

  • 我有一个按钮: null null 但是,当我点击它的时候,这是永远不会打印任何东西的?您可以在这张图片中看到,它正在找到这些元素,但在单击时没有触发。

  • 任何人都可以知道如何做到这一点吗? 我想这是一个编辑文本,但是我怎么能同时放标签和文本呢? 先谢谢你

  • 我的问题是,我有一个函数可以调整一个div的字体大小,但是这个div同时包含文本和HTML,所以当函数运行时,嵌套的HTML大小也会改变,有没有一种方法,我可以只改变文本的大小,而不触动HTML?非常感谢任何帮助。代码为javascript