【问题标题】:How to extract the text present in DOM using Selenium and Java如何使用 Selenium 和 Java 提取 DOM 中的文本
【发布时间】:2020-01-25 15:39:33
【问题描述】:

我正在尝试获取 Dom 结构中存在的文本,但我无法获取它,我使用了 getText();getAttribute(); 但没有得到我使用的值、内部 html、外部 html、文本等必须在 getAttribute() 中提及;但无法获取该文本可以任何人帮助我从中获取。

<label class="">
    <input type="checkbox" value="ml+4gvbuEG8Y3bBbAEbQvA==" name="selectedemployees" class="checkall">Alberta              Weekly1             
</label>

我想在我的控制台中获取“Alberta Weekly1”文本

Console output

【问题讨论】:

  • 贴出代码,包括你如何定位元素,并解释你尝试它时发生了什么。
  • 您是否要获取复选框值?真/假,也让我们知道语言(Java/C#/ Python)
  • 不,我只想用红色突出显示文本

标签: javascript java selenium xpath webdriverwait


【解决方案1】:

要提取文本Alberta Weekly1,您需要为visibilityOfElementLocated() 诱导WebDriverWait,并且由于所需节点是文本节点,您可以使用executeScript() 方法以及以下任一Locator Strategies

  • xpath 1

    System.out.println(((JavascriptExecutor)driver).executeScript("return arguments[0].lastChild.textContent;", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[./input[@class='checkall' and @name='selectedemployees']]")))).toString());
    
  • xpath 2

    System.out.println(((JavascriptExecutor)driver).executeScript("return arguments[0].lastChild.textContent;", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label/input[@class='checkall' and @name='selectedemployees']/..")))).toString());
    

【讨论】:

    【解决方案2】:

    要获取 Text Alberta Weekly1 你需要诱导 WebDriverWaitvisibilityOfElementLocated() 并使用下面的 XPATH 选项。

    WebDriverWait wait = new WebDriverWait(driver, 30);
    String textval=wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[./input[@name='selectedemployees']]"))).getText(); 
    System.out.println(textval);
    

    【讨论】:

    • 我只收到 Alberta Weekly1 文本,我必须以独特的方式获取所有提及的文本
    • @phanikumar :您的要求是获取文本 Alberta Weekly1 。如果您想获取所有文本,您需要为所有文本发布 DOM 元素?
    • 你是对的,但是 xpath 是为所有元素编写的 //label[./input[@name='selectedemployees']] .not for single element
    • 那么当您运行该代码时,您会得到什么文本?
    • 检查以下 xpath ://label[./input[@name='selectedemployees' and @class='checkall']]
    【解决方案3】:

    你也可以尝试下面给定的 xpath。

    //label//child::input[@class='checkall' and @name='selectedemployees']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2021-12-29
      • 2020-04-13
      • 2020-11-05
      • 2020-11-01
      • 2012-05-08
      相关资源
      最近更新 更多