0

enter image description here Ich versuche, eine Webseite mit Selen und Python zu automatisieren. Ich habe 'xpath checker - https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/' in Firefox verwendet und den folgenden Code geschrieben.Wie behebt man das Problem "InvalidSelectorError: Fehler beim Suchen eines Elements mit dem XPath-Ausdruck"?

Selen-Python-Code:

def create_user(): 

    #Click 'Administration' 
    mydriver.find_element_by_xpath("//*[@id('main-navigation')/x:li[5]/x:a").click()  
    mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    mydriver.find_element_by_xpath("//*[@id('main-navigation')/x:li[5]/x:ul/x:li[1]/x:ul[2]/x:li[2]/x:a").click() 
    mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    mydriver.find_element_by_xpath("//*[@id('accordion')/x:li[2]/x:a").click() 
    mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 


create_user() 

Wenn ich die oben ausführen, erhalte ich folgende Fehlermeldung:

InvalidSelectorException: Message: The given selector //*[@id('main-navigation') 
/x:li[5]/x:a is either invalid or does not result in a WebElement. The following 
error occurred: 
InvalidSelectorError: Unable to locate an element with the xpath expression //*[ 
@id('main-navigation')/x:li[5]/x:a because of the following error: 
SyntaxError: The expression is not a legal expression. 
Stacktrace: 
    at FirefoxDriver.annotateInvalidSelectorError_ (file:///c:/users/admin/appda 
ta/local/temp/2/tmpgchoem/extensions/[email protected]/components/driver-c 
omponent.js:10744) 
    at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/admin/appd 
ata/local/temp/2/tmpgchoem/extensions/[email protected]/components/driver- 
component.js:10775) 
    at FirefoxDriver.prototype.findElement (file:///c:/users/admin/appdata/local 
/temp/2/tmpgchoem/extensions/[email protected]/components/driver-component 
.js:10779) 
    at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/admin/appda 
ta/local/temp/2/tmpgchoem/extensions/[email protected]/components/command- 
processor.js:12661) 
    at DelayedCommand.prototype.executeInternal_ (file:///c:/users/admin/appdata 
/local/temp/2/tmpgchoem/extensions/[email protected]/components/command-pr 
ocessor.js:12666) 
    at DelayedCommand.prototype.execute/< (file:///c:/users/admin/appdata/local/ 
temp/2/tmpgchoem/extensions/[email protected]/components/command-processor 
.js:12608) 

Könnte jemand bitte eine Idee vorschlagen, diesen Code zu beheben.

+0

Warum Sie verwenden 'x:' .... und es ist '@ id = 'main-navigation'' insteadof' @id (' main-Navigation ') '... –

Antwort

0

Sie benötigen zusätzliche ][@id=...] Block zu schließen. So versuchen

mydriver.find_element_by_xpath("//*[@id='main-navigation']/x:li[5]/x:a").click()  
mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
mydriver.find_element_by_xpath("//*[@id='main-navigation']/x:li[5]/x:ul/x:li[1]/x:ul[2]/x:li[2]/x:a").click() 
mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
mydriver.find_element_by_xpath("//*[@id='accordion']/x:li[2]/x:a").click() 
mydriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
+0

Danke für Deine Antwort. Ich habe den obigen Code ausprobiert. Aber ich bekomme immer noch den gleichen Fehler: InvalidSelectorException: Nachricht: Der angegebene Selektor // * [@ id ('Hauptnavigation') ]/x: li [5]/x: a ist entweder ungültig oder führt nicht zu ein WebElement. Der folgende Fehler trat auf: g Fehler aufgetreten: InvalidSelectorError: Konnte ein Element mit dem Xpath-Ausdruck nicht finden // * [ @id ('Hauptnavigation')]/x: li [5]/x: a wegen des folgenden Fehlers : SyntaxError: Der Ausdruck ist kein zulässiger Ausdruck. Stacktrace: bei FirefoxDriver.annotateInvalidSelectorError_ (file: /// c:/users/admin .... – rcubefather

+0

Sie verwenden immer noch falsche 'XPath'. Überprüfen Sie meine Antwort noch einmal: Ich benutze' @ id = 'Haupt-Navigation '', aber nicht' @id (' main-Navigation ')! ' – Andersson

+0

bieten auch' HTML' Code, so kann ich corectness prüfe ich bin nicht sicher, dass 'x:. li' richtige Ausdruck ist – Andersson

Verwandte Themen