【问题标题】:Locate text in webpage and click - Eclipse Selenium在网页中找到文本并单击 - Eclipse Selenium
【发布时间】:2020-09-24 19:39:31
【问题描述】:

我想在网页中查找一些文本。此文本位于列表中,对于此列表的每个值,我需要在网页中找到文本并单击属于该值的按钮。这是我的代码:

List<String> lstFaturasAProcessar = new ArrayList<>();
for (String fatNumber : lstFaturasAProcessar) {
             if(driver.getPageSource().contains(fatNumber))
             driver.findElement(By.className("btn-default btn-small dropdown-trigger")).click();
}           

基本上我是说,如果该列表的值存在于网页中,请单击按钮。 list 的所有值都有不同的按钮,并且所有按钮都有相同的类名,但是当它单击按钮时没有任何反应。按钮的 HTML:

<button type="button" class="btn-default btn-small dropdown-trigger">
                <span>Obter documentos<i class="icon2-arrow-down"></i></span>
              </button>

你能帮帮我吗?

【问题讨论】:

  • List&lt;String&gt; lstFaturasAProcessar的内容是什么?当您已经拥有ArrayList&lt;&gt; 时,为什么还需要driver.getPageSource()
  • 但是即使我不使用 driver.getPageSource() 它也不起作用

标签: html eclipse selenium web button


【解决方案1】:
  1. 可能有多个父级具有匹配的类名,它会选择第一个可能不是按钮的元素。因此使用 css 或 xpath 来定位具有匹配文本而不是页面源的按钮元素。
  2. 对于某些 angular/react 应用程序,请尝试单击 span
    例如:- //按钮/跨度并单击

  3. 1234563 示例:xpath :- //div[@id= ‘blahblah’] / 按钮

【讨论】:

  • 但是这些按钮都没有唯一标识符。这个网页有不同的值,在这个值旁边有一个特定的按钮(“下载”按钮)
  • 就像:值 1 DOWNLOAD 值 2 DOWNLOAD 值 3 DOWNLOAD ...而我只想从列表中存在的值中下载
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 2018-12-11
  • 2015-09-01
相关资源
最近更新 更多