2016-03-20 12 views
0

Gerekli URL'de bulunan tüm bağlantı sayfalarının içeriğini kontrol etmeye çalışıyorum.Selenide geçersiz seçici: Xpath ifadesiyle bir öğe bulunamıyor

1- Gerekli URL'ye

2- onay bağlantıları için doğrulama (href içeriği) her bağlantı

için

3- gezinmek tüm bağlantıları bulmak:

yüzden aşağıdakileri yapın

5- her bağlantının

String[] links = null; 
    int linksCount = 0; 
    System.setProperty("webdriver.chrome.driver", "Resources/chromedriver.exe"); 
    WebDriverRunner.setWebDriver(new ChromeDriver()); 
    driver= WebDriverRunner.getWebDriver(); 


    open("http://vanilla.sa/"); 
    List<WebElement> linksize = WebDriverRunner.getWebDriver().findElements(By.tagName("a")); 
    linksCount = linksize.size(); 
    links= new String[linksCount]; 
    out.println("List of links Available: "); 

    for(int i=0;i<linksCount;i++) 
    { 
     links[i] = linksize.get(i).getAttribute("href"); 

    } 
    // navigate to each Link on the webpage 
    for(int i=0;i<linksCount;i++) 
    { 

     System.out.println(links[i]); 
     driver.navigate().to(links[i]); 
     Selenide.sleep(7); 
     WebElement error = $(Selectors.byText("condition")); 
     $(error).shouldNotBe(visible) 
      .shouldNotBe(text("condition")); 

    } 

alth yönelik durumunu kontrol ough Bir url için bu durumu kontrol etmeye çalıştı ve işe yaradı ama otomatik ardından
Yukarıdaki örnekte olduğu gibi farklı bağlantılar (URL'ler) için navigasyon aşağıdaki istisna ne zaman:

http://vanilla.sa/%D8%AD%D9%82%D8%A7%D8%A6%D8%A8/%D8%AD%D9%82%D8%A7%D8%A6%D8%A8-%D9%83%D8%A8%D9%8A%D8%B1%D8%A9 org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression .//*/text()[normalize-space(.) = "condition"]/parent::* because of the following error: TypeError: Failed to execute 'createNSResolver' on 'Document': parameter 1 is not of type 'Node'. (Session info: chrome=49.0.2623.87) (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.2 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 74 milliseconds For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html Build info: version: '2.50.1', revision: 'd7fc91b', time: '2016-01-29 19:04:49' System info: host: 'Hana', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.7.0_80' *** Element info: {Using=xpath, value= .//*/text()[normalize-space(.) = "condition"]/parent::* } Session ID: 94c50df8d0862e2060230a819395224e Driver info: org.openqa.selenium.chrome.ChromeDriver

cevap

0

, .///text()[normalize-space(.) = "condition"]/parent:: XPath traceback göre ifade kullanılıyor. Muhtemelen aslında geçersiz samimiydim edilir: Bazı href bağlantıları olmayan ve boş bir sayfa yüklenirken çünkü

.//text()[normalize-space(.) = "condition"]/parent::* 
+0

WebElement hatası = driver.findElement (By.xpath (" .// metin() [. Normalleştirmek-boşluk() = \ "" + "durum" + "\"]/ebeveyn :: * ")); – Hana90

+0

org.openqa.selenium.NoSuchElementException: böyle bir öğe yok *** Öğe bilgisi: {Using = xpath, value =. // text() [normalize-boşluk (.) = "Koşul"]/parent :: *} – Hana90

+0

lütfen bu http://stackoverflow.com/questions/36128144/invalid-selector-matter-of-loading-page-or-not – Hana90

1

Kodunuz muhtemelen başarısız olur. Geçerli olanları filtrelemeniz ve kopyaları silmeniz gerekir. Java/Selenyum/ChromeDriver ile tüm bağlantıları test etmek için:

WebDriver driver = new ChromeDriver(); 
driver.get("http://vanilla.sa"); 

ArrayList links = (ArrayList)((JavascriptExecutor)driver).executeScript(
    "var arr = {}, l = document.links;" + 
    "for(var i=0; i<l.length; i++) {" + 
    " var link = l[i].href;" + 
    " if(link.startsWith('http'))" + 
    " arr[link] = 0;" + 
    "}" + 
    "return Object.keys(arr);"); 

for (Object link : links) { 
    driver.get(link.toString()); 
    WebElement element = driver.findElement(By.xpath("//body")); 
} 
+0

adresine bakın. Bağlantıları başarıyla aldım, ancak bir sayfanın bağlantısı için belirli bir öğeyi ararken sorunum – Hana90

+0

'da gezinirken lütfen bu http://stackoverflow.com/questions/36128144/invalid-selector-matter-of-loading-page-or-not adresine bakın. – Hana90

0

O Florent B. oldukça iyidir yukarıdaki cevabı görünüyor.

Kodlama stili ile ilgili bazı tavsiyelerde bulunalım. Görüyorum ki, Selenide sözdiziminin tam gücünü kullanmıyorsunuz. Testiniz kolaylaştırılabilir:

System.setProperty("webdriver.chrome.driver", "Resources/chromedriver.exe"); 
System.setProperty("selenide.browser", "chrome"); 

open("http://vanilla.sa/"); 
List<String> links = new ArrayList<>(); 
out.println("List of links Available: "); 

for (SelenideElement link : $$("a")) { 
    links[i] = link.attr("href"); 
} 

// navigate to each Link on the webpage 
for (String link : links) { 
    System.out.println(link); 
    open(link); 
    sleep(7000); // this is milliseconds! 
    $(byText("condition")) 
     .shouldNotBe(visible) 
     .shouldNotHave(text("condition")); 
} 
İlgili konular