我在 stackoverflow 上查看了类似的问题,但没有找到任何可以帮助我的问题。
我有以下 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,但我做不到,因为有一些空格。那么,我怎样才能找到这样的元素呢?
最佳答案
试试下面的表达式:
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']"));
关于java - 如何使用 Selenium ChromeDriver 从 span 类获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254760/