Oto pole HTML, do którego próbuję kliknąć,

<div style="min-height: 100px;" class="fr-element fr-view" dir="ltr" 
    aria-disabled="false" spellcheck="true"
    contenteditable="true">
    <p><br></p>
</div>
Then trying to reply with this button

<button type="submit" class="button--primary button button--icon button--icon--reply">
    <span class="button-text">
        Post reply
    </span>
</button>

Oto, czego próbowałem

WebElement Post;
Post = driver.findElement(By.xpath("//input[contains(@class,'fr-element fr-view']"));
Post.click();
Post.sendKeys("okay");

driver.findElement(By.xpath("//button//span[text()='Post reply']")).click();
1
Scrub 22 luty 2019, 04:18

2 odpowiedzi

Najlepsza odpowiedź

Twój element wejściowy jest div i brakowałeś zamykającego okrągłego wspornika na żądanie wyrażenia.

Powinno działać:

Post = driver.findElement(By.xpath("//div[contains(@class,'fr-element fr-view')]"));

Powinieneś przetestować XPaths w konsoli przeglądarki jako sprawdzenie zdrowia. W chromie kliknij prawym przyciskiem myszy i kliknij Inspect (Ctrl + Shift + I). Następnie przejdź do zakładki Elements i wyszukaj (Ctrl + F) na elementach za pomocą selektora XPATH / CSS.

Mam nadzieję że to pomoże!

1
cullzie 22 luty 2019, 01:25

Możesz użyć cssselector , aby kliknąć element. Oto przykład dla C #

_driver.FindElement(By.CssSelector("a.ng2-smart-page-link.page-link.page-link-next"));

Kolejnym zaleceniem, możesz spróbować użyć rejestratora Katalonu

Zobacz szczegóły i pobrać w

https://chrome.google.com/webstore/detail/katalon-Recorder/ljdobmomomdgdljniojadhoplhkpialdid.

Jest używany do tworzenia skryptu na podstawie działania podczas nagrywania. Aby można było wyszukiwać rozwiązanie do wyboru przez ID , , lub cssselector .

1
halfer 22 luty 2019, 15:52