无法找到具有href链接的元素

时间:2019-01-31 12:57:37

标签: java selenium cucumber

enter image description here

我无法找到带有href链接的带有锚标签的元素(失败者标签中的每月链接-检查所附图片)。正在获取NoSuchElementFound异常。已经尝试使用javascript执行程序并等待。

HTML:

<div style="width:50%;font-size:14px;float:right;">
    <h2 class="f16 bold">Losers</h2>    
    <div class="tabs">
<a href="//money.rediff.com/losers/bse/daily">Daily</a>
</div>
    <div class="tabs">
<a href="//money.rediff.com/losers/bse/weekly">Weekly</a>
</div>
    <div class="tabs">
<a href="//money.rediff.com/losers/bse/monthly">Monthly</a>
</div>
</div>

4 个答案:

答案 0 :(得分:0)

您可以尝试使用xpath查找组件。试试下面的代码。这可能对您有帮助

stu

答案 1 :(得分:0)

在这种情况下,硒的最佳实践是使用linkText(org.openqa.selenium.By.linkText),您可以在a标签内传递文本,然后返回equals匹配项。为了正确使用,您还可以使用链,这是一个简单的示例:

library(tidyverse)
library(wrapr)

df %.>%
  ggplot(data = ., aes(
    x = Urbanisation_index,
    y = Canopy_Index,
    group = Urbanisation_index
  )) +
  stat_boxplot(
    geom = 'errorbar',
    width = .25
  ) +
  geom_boxplot() +
  geom_line(
    data = group_by(., Urbanisation_index) %>%
      summarise(
        bot = min(Canopy_Index),
        top = max(Canopy_Index)
      ) %>%
      gather(pos, val, bot:top) %>% 
      select(
        x = Urbanisation_index,
        y = val
      ) %>%
      mutate(gr = row_number()) %>%
      bind_rows(
        tibble(
          x = 0,
          y = max(.$y) * 1.15,
          gr = 1:8
        )
      ),
    aes(
      x = x,
      y = y,
      group = gr
    )) +
  theme_light() +
  theme(panel.grid = element_blank()) +
  coord_cartesian(
    xlim = c(min(.$Urbanisation_index) - .5, max(.$Urbanisation_index) + .5),
    ylim = c(min(.$Canopy_Index) * .95, max(.$Canopy_Index) * 1.05)
  ) +
  ylab('Company Index (%)') +
  xlab('Urbanisation Index')

这是一个简化的版本,您可以通过服务员检查等对它进行改进。

答案 2 :(得分:0)

<a href="foo">的简单xpath示例

"//a[contains(@href,'foo')]"

答案 3 :(得分:-1)

要对元素损失->每月上的click(),因为所需元素位于<iframe>中,因此您必须:

  • 诱导 WebDriverWait 以使所需的框架可用并切换到它。
  • 诱导 WebDriverWait 以使所需的元素可点击
  • 您可以使用以下基于 Python 的解决方案:

    • 代码块:

      from selenium import webdriver
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.by import By
      
      driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
      driver.get("https://money.rediff.com/losers/bse/monthly")
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='logwatch']")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//h2[contains(., 'Losers')]//following::div[@class='curLink tabs']/a[contains(., 'Monthly')]"))).click()