2016-01-09 15 views
6

Wiem, że pytanie jest dość proste, aby ludzie odpowiedzieli, ale utknąłem na liście upuszczania, z której chciałem wybrać miesiąc urodzenia.Nie można wybrać wartości z listy rozwijanej

Pracowałem nad innymi stronami internetowymi, ale niestety nie mogłem tego zrobić.

Próbowałem:

Kliknij, używając różnych lokalizatorów. Używanie klasy Action do przesuwania wskaźnika myszy i klikania. Korzystanie z Java Script w celu wybrania miesiąca.

Dziwne jest to, że jeśli otrzymam tekst WebElement, jestem w stanie to zrobić, ale nie mogę go kliknąć.

adres URL aplikacji to: a link!

Jest to podczas tworzenia konta w google.

enter image description here

starałem się wybrać miesiąc z listy każdy miesiąc.

Mam wyjątek TimeOutException, gdy czekam, aż pudełko ma pożądany miesiąc.

Poza tym nie dostaję żadnego błędu. Skrypt zawsze przechodzi bez dokonywania wyboru.

Wiem, że pytanie jest dość łatwe, ale jeśli ktoś może mi pomóc przejść przez to.

Z góry dziękuję.

<span id="BirthMonth" class=" form-error" aria-invalid="true"> 
<div class="goog-inline-block goog-flat-menu-button jfk-select" role="listbox" style="-moz-user-select: none;" aria-expanded="false" tabindex="0" aria-haspopup="true" aria-activedescendant=":0" title="Birthday"> 
<div class="goog-menu goog-menu-vertical" style="-moz-user-select: none; visibility: visible; left: 0px; top: -82.2333px; display: none;" role="listbox" aria-haspopup="true"> 
<div id=":1" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":2" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div class="goog-menuitem-content">February</div> 
</div> 
<div id=":3" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":4" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":5" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":6" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":7" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":8" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":9" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":a" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":b" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
<div id=":c" class="goog-menuitem" role="option" style="-moz-user-select: none;"> 
</div> 
<input id="HiddenBirthMonth" type="hidden" name="BirthMonth"> 
</span> 
+0

pls dodaj odpowiedni html do pytania. – parishodak

+0

Proszę zobaczyć dodany html. Alternatywnie można go znaleźć z linkiem w poście. Jest to ogólna strona konta gmail. – Atishay

Odpowiedz

2

czy próbowałeś z sendkey? Mam nadzieję, że za pomocą sendKey będzie działać

driver.findElement(By.xpath(".//*[@id='BirthMonth']/div[1]")).sendKeys("april"); 

Dzięki

+0

Dzięki za odpowiedź Murali. Ale Niestety jest po prostu wisi do tego miesiąca z listy, ale nie wybieraj go. – Atishay

+0

Próbowałem tego i działa dobrze .. daj mi kod, który wypróbowałeś .. Właśnie dostałem tę stronę rejestracyjną i użyłem tego sendkeys .. Wybrał miesiąc. Nie jestem pewien, jak próbowałeś. Podaj swój kod –

+0

public void selectMonthFromMonthList() { birthMonthDropList.click(); wait.until (ExpectedConditions.visibilityOfAllElements (miesiące)); driver.findElement (By.xpath (".//**@ id = 'BirthMonth']/div [1]")).sendKeys ("luty"); } – Atishay

0

Spróbuj poniższy kod. To musi działać.

Select(driver.findElement(By.id("BirthMonth"))).selectByVisibleText("February"); 

jeśli nie, najpierw kliknij listę rozwijaną. Następnie zapisz wszystkie wartości z listy rozwijanej do tablicy lub listy, a następnie wybierz wymaganą wartość z listy/tablicy.

+0

Witaj Shiva, Dziękuję za odpowiedź, ale niestety próbowałem tego wszystkiego, ale to nie działa. Jestem w stanie wydrukować tekst dla tagów podczas zapętlania listy, ale nie mogę ich wybrać. – Atishay

+0

Mogę wybrać miesiąc w przeglądarce Safari z powyższym kodem. Ale nie można w firefox. –

0

Możesz kliknąć najpierw BirthMonth, aby otworzyć listę rozwijaną, a następnie kliknąć miesiąc, co chcesz. Zobacz poniżej, aby wybrać Czerwiec:

driver.findElement(By.cssSelector("#BirthMonth > div")).click(); 
driver.findElement(By.xpath("//*[contains(text(),'June')]")).click(); 
+0

Dzięki za ans. To również nie działa. Daje mi następujący błąd: rg.openqa.selenium.WebDriverException: unknown error: Element nie jest klikalny w punkcie (1154, 524). Inny element otrzyma kliknięcie:

...
(Informacje o sesji: chrome = 47.0.2526.106) (Informacje o sterowniku: chromedriver = 2.19.346078 (6f1f0cde889532d48ce8242342d0b84f94b114a1), platforma = Windows NT 6.3 x86_64) (OSTRZEŻENIE: Serwer nie dostarczył żadnego śledzenia stosu informacje) – Atishay

+0

@Atishay powinno działać? Jakiej przeglądarki korzystałeś? –

+0

Hi Mesut, użyłem przeglądarki chrome i firefox. – Atishay