2017-02-15 31 views
3

我看着在stackoverflow的simillar問題,並沒有找到任何可以幫助我。如何使用Selenium ChromeDriver從跨班級文本

我有以下的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,但我不能這樣做,因爲有一些空格。那麼,我如何找到這樣的元素?

回答

0

試試下面的表達式:

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']")); 
+0

不過NoSuchElementException異常 –

+0

哦,我的上帝。謝謝!我忘了在動作之間加入睡眠... –

+0

| ExplicitWait(http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits)比睡眠好得多 - 它可以節省時間。如果我的回答有助於您解決問題,請將其標記爲「已接受」。謝謝 – Andersson

相關問題