2017-11-17 1 views
-1

Hier ist der Code.Selenium Web Driver Problem beim Threading. C#

browser = new FirefoxDriver(); 
browser.Navigate().GoToUrl("https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/buy-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry"); 
Thread.Sleep(5000); 
browser.FindElement(By.Name("ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown")).SendKeys("asdf"); 

Es funktioniert in Ordnung, aber wenn ich in Thread laufen zeigt es Element nicht sichtbar .... warum es in einen Thread wirft?

+2

Können Sie erarbeiten, was Sie Männer von 'Wenn ich in Thread läuft zeigt es Element nicht sichtbar'? Irgendeine spezielle Konfiguration für 'Thread'? – DebanjanB

+0

Ich führe einen Thread, in dem ich eine URL navigiere und dann auf das Element zugreife. Wenn ich versuche, auf das Element zuzugreifen, heißt es "Element ist nicht sichtbar". Aber wenn ich den Code ohne Thread ausführen, funktioniert es gut. – user1448783

+2

Wie läuft es ohne Thread? – JeffC

Antwort

0

Element könnte sein, nicht sichtbare Cuz Seite nur knapp sein Ziel reload beim Check Moment oder eine Website integrieren dynamische Namen, Klassen usw.

Sie so etwas wie dies versuchen:

IWebDriver browser = new FirefoxDriver(); 
browser.Navigate().GoToUrl("https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/buy-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry"); 

while (true) { 
    try { 
     browser.FindElement(By.Name("ph_pagebody_0$phthreecolumnmaincontent_1$panel$VehicleSearch$RegistrationNumberCar$RegistrationNumber_CtrlHolderDivShown")).SendKeys("asdf"); 
     break; 
    } 
    catch { Thread.Sleep(1000);} 
} 
+0

funktioniert nicht bro. Ich habe dir gesagt, dass mein Code gut funktioniert ohne Thread, aber in Thread zeigt es Ausnahme – user1448783

+0

Sie können versuchen, Task dafür zu verwenden, mb könnte es helfen. –

0

Going durch die xpath Sie versucht, heraus, scheint das name Attribut dynamisch ist. das Textfeld für Registration number suchen Sie können eine der folgenden Optionen versuchen:

  • CssSelector:

    browser.FindElement(By.CssSelector("input[class=text text xlong v_registrationNumber v_required][id^=ph_pagebody_)]")).SendKeys("asdf"); 
    
  • XPath:

    browser.FindElement(By.XPath("//input[@class='text text xlong v_registrationNumber v_required'][starts-with(@id, 'ph_pagebody_')]")).SendKeys("asdf"); 
    
+0

funktioniert nicht bro. Ich habe dir gesagt, dass mein Code funktioniert ohne Thread aber in Thread zeigt es Ausnahme - – user1448783

+0

Was meinst du mit 'nicht funktioniert'? Siehst du irgendeinen Fehler? Was sagt der Fehler? Können Sie die Frage mit Fehler-Stack-Trace aktualisieren? – DebanjanB

+0

Diese Zeile "browser.FindElement (By.Name (" ph_pagebody_0 $ phthreecolumnmaincontent_1 $ panel $ VehicleSearch $ RegistrationNumberCar $ RegistrationNumber_CtrlHolderDivShown ")). SendKeys (" asdf ")" funktioniert gut und das Element zurückgeben. Aber wenn ich diesen Code in einem Thread ausführen, findet er das Element nicht. – user1448783

Verwandte Themen