我有一个div元素,如下所示。
我用以下xpath标识了这个元素。
//*[contains(@class,'ce-component-title')]
Selenium标识此元素并加载WebElement对象。但是当我去获取它的文本时,我只是得到一个“。”如下所示,而不是获取“购买付款过程”。我在这里做错了什么?我检查了chrome控制台,没有其他元素与此xpath匹配。
任何帮助将不胜感激。
答案 0 :(得分:1)
根据您共享的HTML,该元素是Angular元素,因此您必须诱使 WebDriverWait 以便使所需的元素可见,并且使用以下任一解决方案:
cssSelector
:
String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div[ng-if*='getTitle']>div.ce-component-title"))).getAttribute("innerHTML");
xpath
:
String myString = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(@ng-if,'getTitle')]/div[@class='ce-component-title flex text-overflow ng-binding']"))).getAttribute("innerHTML");
答案 1 :(得分:0)
我认为您的xpath(// * [contains(@ class,'ce-component-title')])返回多个元素,而您所需的元素不是第一个。 尝试使用浏览器的控制台,以验证此xpath返回多少元素。 如果您向我提供此页面的网址,我可以为您提供帮助。