我在stackoverflow上查看了simillar问题,并没有找到任何可以帮助我的东西。
我有以下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 :(得分: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']"));