【问题标题】:How to click a button from a website with javascript and find that element through xpath and a specific text that the element contains?如何使用 javascript 从网站单击按钮并通过 xpath 和元素包含的特定文本找到该元素?
【发布时间】:2021-08-17 16:44:21
【问题描述】:

我知道在 selenium 中可以通过元素包含的文本找到特定元素。我有一个示例代码:

the_element = browser.find_element_by_xpath("//span[contains(.,TEXT)]")

现在可以只使用 javascript 吗? javascript 中有多种方法可以通过选择器来查找元素,但是通过元素包含的特定文本来查找元素是否有效?

我正在使用的元素是这样的:

<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">28</span>

我想通过它包含的数字 (28) 来查找元素。

如果有人知道怎么做,那就太棒了。

【问题讨论】:

标签: javascript html selenium xpath element


【解决方案1】:

仅获取 span 元素(或文档中您知道要查看的特定部分中的元素)的集合。循环遍历元素并检查它们的 textContent 以获取您的值。

document.querySelectorAll("span").forEach(function(element){
  if(element.textContent.includes("28")){
    console.log(element);
  }
});
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">21</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">22</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">22</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">23</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">24</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">25</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">26</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">27</span>
<span class="_7Cm1F9 ka2E9k uMhVZi dgII7d z-oVg8 pVrzNP">28</span>

【讨论】:

  • 感谢您的回答! Javascript 应该尽可能高效,所以我认为这不是我的情况的最佳解决方案。不过还是谢谢你
  • @programming_for_fun 这里没有什么本质上是低效的。这是您在 JavaScript 中根据其文本找到众多元素之一的方法。
  • 你是对的。此外它正在工作,我只是在寻找其他东西,然后循环遍历每个 span 元素。但我想循环遍历所有内容甚至不会产生很大的时间差异。无论如何,我找到了我正在寻找的东西,所以我很高兴。
【解决方案2】:

定位元素的方式不会因语言绑定而改变(语法除外)。这个 xpath 应该可以工作:

the_elements = browser.find_elements_by_xpath("//span[text()='28']")
for element in the_elements:
    // do whatever here

编辑:这是 Javascript 中的相同代码:

var elements = driver.findElement(By.xpath("//span[text()='28']"));
for (var e : elements)
{
    // Do something
}

【讨论】:

  • 所以我可以在 Javascript 中使用相同的代码吗?因为它实际上是用 Python 编写的
  • 哦,我刚刚扩展了你的 python 示例。您希望它在 JavascriptExecutor 中运行吗?如果是,为什么?
  • 我想做一个 Javascript,我可以在浏览器中执行,可以点击特定的元素/按钮。
  • 为什么需要使用javascript?为什么不能使用 Selenium 的常规方法来识别元素?
  • 实际上我认为我可以很容易地制作一个基于 Selenium 的版本,但问题是,在浏览器中执行它比 Selenium 快得多。此外,Selenium 被许多正在检测网络驱动程序的站点阻止。
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 2022-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 2019-09-22
相关资源
最近更新 更多