0

Dies ist, wie es aussieht, wenn ich inspizieren Element mit FirebugSelen XPath kein solches Element Ausnahme, obwohl es in firepath arbeitet

enter image description here

Wenn ich diese gleiche Syntax versuchen in XPath es Ergebnis Seite 2 auswählt. Ich habe den gleichen Ansatz in selen IDE versucht und auf find geklickt, es wählt aber die Ergebnisseite 2 aus, während ich den Code ausführe. Ich bin gettting kein solches Element Ausnahme

XPath-Syntax: //a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']

public void jobSearch(){ 
     WebDriver driver= new FirefoxDriver(); 
     driver.get("https://www.indeed.com"); 
     driver.findElement(By.id("what")).sendKeys("QA Engineer"); 
     driver.findElement(By.id("where")).clear(); 
     driver.findElement(By.id("where")).sendKeys("Seattle,WA"); 
     driver.findElement(By.id("fj")).click(); 
     driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS); 

     driver.findElement(By.xpath("//a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']")).click(); 

Vielen Dank für Ihre Zeit und wertvoller Vorschlag.

+0

Hallo, bist du sicher, dass dein xpath mit nur einem Element übereinstimmt? Selen versucht, auf das erste Element zu klicken.Wenn es nicht angezeigt oder anklickbar ist, ist es normal, dass Sie eine Ausnahme erhalten. –

+0

1 übereinstimmender Knoten ist, was ich sehe, wenn ich diese Syntax in Feuerpfad verwende. Danke –

+0

Sie suchen nach Seattle, aber im xpath verwenden Sie Renton. Ändern Sie Ihren xpath und versuchen Sie, ihn bei Suchvorgängen wieder verwendbar zu machen. – Grasshopper

Antwort

3

Es gibt tatsächlich 3 Fehler:

  1. Der große Fehler, Script nicht in der Lage ist sichtbar Möglichkeit, nächste Seite zu finden. In gegebenen Screenshot das Ergebnis während des angegebenen Codes. Aus diesem Grund kann das Skript kein Element finden.

Selen WebDriver Skript arbeitet nur mit sichtbarem Bereich

enter image description here

Lösung:

Add Schritte Web-Seite nach unten scrollen

JavascriptExecutor jse = (JavascriptExecutor) driver; 
jse.executeScript("window.scrollBy(0,1000)", ""); 
  1. Xpath ist nicht verallgemeinern. Es ist für erhalten, was auch immer die URL an 2 Num Seite platziert wird. So ändern ist nach unter:

    //div[@class='pagination']//span[text()='2']

  2. Es gibt einige Unterbrechung wie Pop-up, in der Region basiert url. So schreiben Code ist wie wie unter den gegebenen für die zukünftige Fehler zu beseitigen:

    public void jobSearch() { 
    
    
        try{ 
         WebDriver driver= new FirefoxDriver(); 
         driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
         driver.manage().window().maximize(); 
         driver.get("https://www.indeed.com"); 
         try 
         { 
          //Here region based URL gets open so remove it if it is directly open www.indeed.com 
          driver.findElement(By.linkText("www.indeed.com")).click(); 
         } 
         catch (Exception e) 
         { 
    
         } 
         driver.findElement(By.id("what")).sendKeys("QA Engineer"); 
         driver.findElement(By.id("where")).clear(); 
         driver.findElement(By.id("where")).sendKeys("Seattle,WA"); 
         driver.findElement(By.id("fj")).click(); 
         try 
         { 
          // After this one pop up gets open so close it 
          driver.findElement(By.xpath("//button[@id='prime-popover-close-button']/span")).click(); 
         } 
         catch (Exception e) 
         { 
    
         } 
         //pageDown(driver.findElement(By.id("searchCount")), 2); 
         JavascriptExecutor jse = (JavascriptExecutor) driver; 
         jse.executeScript("window.scrollBy(0,1000)", ""); 
         //driver.findElement(By.xpath("//a[contains(@href,'/jobs?q=qa+engineer&l=Renton%2C+WA&start=10')]/span[contains(@class,'pn')][text()='2']")).click(); 
         driver.findElement(By.xpath("//div[@class='pagination']//span[text()='2']")).click(); 
         // Now continue you code here 
        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } } 
    

Hinweis: Bitte lesen SieGeckoDriver für Firefox und Chromedriver für Chrome-Browser mit Selen 3.0+ Version

+0

Was für eine detaillierte Erklärung, vielen Dank. –

0

try mit folgendem XPath:

//div[@class='pagination']/a/span[text()='2'] 

Hinweis:2 - für 2nd page link. ändere es nach der gewünschten Seitennummer

Verwandte Themen