0

Ich simuliere einen Mobiltelefon-Browser und versuche, ein Dropdown-Element auszuwählen. Ich bin mit einem CSS-Selektor die Combobox zu finden, wenn ich überprüfe, ob CSS-Selektor in dem Entwickler-Tool gefunden wird, aber nicht in meinem CodeAuswählen einer Dropdown-Option

List<WebElement> linkElements = driver.findElements(By 
      .cssSelector(".show-deals-wrapper select")); 

    for (WebElement element : linkElements) { 

     if (element.isDisplayed() 
       && ("Pay Monthly").equals(element.getText())) { 
      element.click(); 
      break; 
     } 

    } 

Das Web ist https://www.o2.co.uk/shop in der mobilen Version. Ich bin wirklich neu in Selen, etwas lernen. Entschuldigung, wenn die Frage so einfach ist.

Vielen Dank im Voraus. Grüße

+0

in Ihrer Website welche Dropdow-Artikel möchten Sie auswählen? – noor

+0

Wenn Sie in einer ** mobilen Version ** auf die Webseite gehen, erhalten Sie die Tabs "apple" "paymonthly" "Pay & go" "ipad" "Zubehör" als Dropdown. Das ist die, die ich verwenden möchte –

+0

Ich sah, dass es eine Popup-Nachricht angezeigt wird, wenn Ihre Website geladen ist. entferne das zuerst und dann klicke zuerst darauf. Nachdem Sie alle Dropdown-Menü angezeigt, dann verwenden Sie Ihren Code ..... eigentlich kann ich Ihnen Detail-Code geben, wenn dies nicht in der mobilen Version ist. – noor

Antwort

0

Sie können Javascript verwenden, um das Element zuerst sichtbar zu machen. dann mach deinen Job so, wie er ist, und mache das Element schließlich wieder unsichtbar. Sehen Sie den folgenden Code-Teil:

  JavascriptExecutor js = (JavascriptExecutor)driver;     
      js.executeScript("document.getElementById('elementID').style.display='block'"); 
      Select select = new Select(driver.findElement(elementID)); 
      select.selectByIndex(pos); 
      js.executeScript("document.getElementById('elementID').style.display='none'"); 

Ich denke, das wird Ihnen helfen.

+0

Vielen vielen Dank, es funktioniert. Meine einzige Frage ist, warum ist es notwendig, um es zu ermöglichen? –

0

So handhabe ich wählt mit Webdriver. Ich hoffe das hilft. Auch ich benutze python

Select(driver.find_element_by_css_selector('.show-deals-wrapper.select')).select_by_visible_text("Pay Monthly") 
+0

Hallo, ich habe versucht mit Select in Java, aber es bekommt "Element ist derzeit nicht sichtbar und kann daher nicht mit " –

+0

" interagieren Wie werden die Elemente in der Auswahlliste ausgefüllt? –

+0

Hallo, danke für deine Hilfe, endlich mache ich das mit der oben ausgewählten Lösung. Danke –

0

u kann wie unten tun Aslo:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("window.scrollBy(0,300)", ""); 

driver.findElement(By.id("dataFilterSelectSelectBoxItArrowContainer")).click(); 

List<WebElement> linkElements = driver.findElements(By 
     .cssSelector(" #dataFilterSelectSelectBoxItOptions>li>a")); 

System.out.println("size is "+linkElements.size()); 
for (WebElement element : linkElements) { 

    System.out.println("size is "+element.getText()); 

    if (("ur text").equals(element.getText())) { 
     element.click(); 
     break; 
    } 

} 

dies auf klickt, welche Art Tarif u möchten.