我正在尝试获取 github 登录页面上错误消息的 XPATH。https://github.com/login(。 但是我无法在铬中获得此元素的 XPATH
我输入了不正确的凭据,并看到"用户名或密码不正确" 然后:
- 我试图通过 chrome
$x("//*[@id='js-flash-container']/div/div/text()")
复制 XPATH,但它返回了 (2( [文本,文本] $x("//div[contains(text(), 'Incorrect username or password.')]")
但它什么也没返回
.HTML:
<div class="flash flash-full flash-error">
<div class="container">
<button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"></path></svg>
</button>
Incorrect username or password.
</div>
</div>
我需要一条错误消息。但我没有
private By error = By.xpath("//*[@id='js-flash-container']/div/div/text()");
使用cssSelector
要容易得多...
String error = driver.findElement(By.cssSelector("div .flash")).getText().trim();
System.out.println(error);
但是,如果你想使用 XPATH:
String error = driver.findElement(By.xpath('//div[@class="container"]')).getText().trim();
System.out.println(error);
提取错误消息用户名或密码不正确。在 GitHub 登录页面上https://github.com/login
您需要诱导WebDriverWait等待visibilityOfElementLocated()
,您可以使用以下任一定位器策略:
-
cssSelector
:System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div#js-flash-container div.container"))).getText());
-
xpath
:System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='js-flash-container']//div[@class='container']"))).getText());
在 Firefox 中,我找到了该元素,并发现 xpath 是:
/html/body/div[3]/main/div/form/div[2]/div/div
我加载了火狐硒,并通过xpath找到了这个元素:
WebElement error_msg = driver.findElement(By.xpath( ELEMENT_XPATH ((;
然后要获取我使用的文本:
Texterror_msg_str = error_msg.getText((;
然后,您可以将此字符串与"不正确的用户名或密码"进行比较,如果它们匹配,则会引发错误。