Могу ли я получить рабочий код для выхода из Facebook? - PullRequest
0 голосов
/ 20 декабря 2018

Я не могу найти правильный XPath для нажатия на Выход из системы в Facebook.
Я так долго пытался заставить XPath щелкнуть на Выходе из системы.
Может кто-нибудь, пожалуйста, помогите мне нажать кнопку Выход из системы?используя селен вебдрайвер с Java.

испытания кода:

//clicking on navigation bar
driver.findElement(By.id("userNavigationLabel")).click();
System.out.println("Successfully clicked");
//Clicking on logout
driver.findElement(By.xpath("//span[contains(text(),'Log out')]")).click();
//closing the current tab
driver.close();

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вы получаете какое-либо исключение?как NosuchElement исключение или элемент не найден ошибка что-то в этом роде.Если это так, вы можете подождать, пока элемент станет видимым, а затем вам придется выполнить операцию.

public void test_01_Logout()
{
WebDriver driver = new FirefoxDriver(); 
driver.navigate().to("www.facebook.com");   
//Add login code here.
waitForElementInDOM(driver, "//div[@id='userNavigationLabel' and 
contains(text(),'Account Settings')]", 15);
driver.findElement(By.xpath("//div[@id='userNavigationLabel' and 
contains(text(),'Account Settings')]")).click();
waitForElementInDOM(driver, "//span[@class='54nh' and contains(text(),'Log Out')]", 
15);
driver.findElement(By.xpath("//span[@class='54nh' and contains(text(),'Log 
Out')]")).click();
}

-------------------------------------------------------------------------------------    

public void waitForElementInDOM(WebDriver driver,String elementIdentifier, long 
timeOutInSeconds) 
{       
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds );
try
{           
//this will wait for element to be visible for 15 seconds       
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath
(elementIdentifier))); 
}
catch(NoSuchElementException e)
{           
e.printStackTrace();
}           
}
0 голосов
/ 20 декабря 2018

Чтобы щелкнуть элемент с текстом как Выйти , вам нужно использовать WebDriverWait , чтобы элемент можно было нажимать , и вы можете использовать следующие строки кода:

driver.findElement(By.cssSelector("div#userNavigationLabel")).click();
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(@data-gt, 'menu_logout')]/span/span[normalize-space()='Log Out']"))).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...