【问题标题】:XPATH and CSS for Selenium Automation - Help Required用于 Selenium 自动化的 XPATH 和 CSS - 需要帮助
【发布时间】:2014-02-22 05:44:11
【问题描述】:

我想查找 XPATH/CSS 定位器以从以下结构中提取文本。 请帮忙。

<div class="page-header song-wrap">
<div class="art solo-art">
<div class="meta-info">
<h1 class="page-title">
Zehnaseeb

我想提供定位器/XPATH,以便它可以返回文本“Zehnaseeb”(在这种情况下)

这没有产生任何结果,

driver.findElement(By.xpath(".//*[@id='main']/div/section/div[1]/div[2]/h1")).getText();

【问题讨论】:

  • h1标签在“Zehnaseeb”之后是否关闭?
  • 你也应该指定你正在使用的代码语言。 C#?爪哇?
  • H1 标签在 Zehnaseeb 之后没有关闭,完整的 TAG IS HERE,1 class="page-title"> Zehnaseeb

标签: css selenium xpath


【解决方案1】:

您是否尝试过 waiting 的元素,

String text = new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.page-header h1.page-title"))).getText();

【讨论】:

  • 太棒了!这个解决方案对我有用。非常感谢!
【解决方案2】:

如果你使用C#,我推荐使用“ScrapySharp”,它非常适合解析HTML。

https://bitbucket.org/rflechner/scrapysharp/wiki/Home

Document htmlDoc = new HtmlDocument();
htmlDoc.loadHtml(driver.PageSource);
var zehnaseebstring = doc.DocumentNode.CssSelect("h1.page-title").SingleOrDefault().InnerText;

这应该可以。

【讨论】:

  • 我也试过了,但效果不错,//*[@id='main']/div/section/div[1]/div[2]/h1/text()
【解决方案3】:

我会检查中间的所有元素以查看层次结构是否正确,但您可以尝试通过使用后代 // 删除中间的一些元素来简化操作

//*[@id='main']//h1[@class='page-title']

【讨论】:

  • //*[@id='main']//h1[@class='page-title'] 这再次到达页面标题,但如果当代码运行,由于这里没有关闭h1标签,我认为提取文本有点困难
猜你喜欢
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
相关资源
最近更新 更多