如何使用 Selenium ChromeDriver 从 span 类中获取文本

Posted

技术标签:

【中文标题】如何使用 Selenium ChromeDriver 从 span 类中获取文本【英文标题】:How to get text from span class using Selenium ChromeDriver 【发布时间】:2017-07-04 10:21:24 【问题描述】:

我在 *** 上查看了类似的问题,但没有找到任何可以帮助我的东西。

我有以下 html 代码:

<span class="help-block ng-scope" translate="">Company</span>

我怎样才能找到这个元素(Java)?我尝试了以下变体:

driver.findElement(By.cssSelector(".help-block.ng-scope"))

driver.findElement(By.xpath("//span[contains(@class, "Company")]"))

我什至尝试通过两种方式从浏览器控制台复制 xpath:

第一:

driver.findElement(By.xpath("//*[@id="ngCloudike"]/body/div[6]/div/div/div/div/form/div[1]/div[6]/span"))

第二:

driver.findElement(By.xpath("/html/body/div[6]/div/div/div/div/form/div[1]/div[6]/span"))

我也试图找到 By.ClassName,但我不能这样做,因为有一些空格。那么,我怎样才能找到这样的元素呢?

【问题讨论】:

【参考方案1】:

试试下面的表达式:

driver.findElement(By.xpath("//span[text()='Company']"))

如果您使用此代码获得NoSuchElementException,请尝试添加一些时间以等待元素出现并可见:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='Company']"))

如果您得到NoSuchElementException,即使使用ExplicitWait,目标元素也可能位于iframe 内。处理iframe 中的元素:

driver.switchTo().frame("iframeNameOrId");
driver.findElement(By.xpath("//span[text()='Company']"));

【讨论】:

仍然没有SuchElementException U|sing ExplicitWait (seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits) 比睡觉要好得多——它可以节省时间。如果我的回答能帮助您解决问题,请标记为Accepted。谢谢

以上是关于如何使用 Selenium ChromeDriver 从 span 类中获取文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Selenium Chromedriver 中设置时区?

在 Selenium 2 中使用 Chrome 驱动程序

爬虫系列---selenium详解

怎样使用Python调用我们平时使用的chrome浏览器

无法在要素文件中运行多个方案

sh install_latest_chromedrive_linux.sh