如何使用 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|singExplicitWait
(seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits) 比睡觉要好得多——它可以节省时间。如果我的回答能帮助您解决问题,请标记为Accepted
。谢谢以上是关于如何使用 Selenium ChromeDriver 从 span 类中获取文本的主要内容,如果未能解决你的问题,请参考以下文章