Chỉ có thể nhận văn bản từ phần tử gốc chứ không phải con của nó trong Selenium?Cách nhận văn bản từ phần tử gốc và loại trừ văn bản khỏi trẻ em (C# Selenium)
Ví dụ: Giả sử tôi có đoạn mã sau:
<div class="linksSection>
<a href="https://www.google.com/" id="google">Google Link
<span class="helpText">This link will take you to Google's home page.</span>
</a>
...
</div>
Trong C# (hoặc bất kỳ ngôn ngữ), tôi sẽ có:
string linktext = driver.FindElement(By.CssSelector(".linksSection > a#google")).Text;
Assert.AreEqual(linkText, "Google Link", "Google Link fails text test.");
Tuy nhiên, Văn bản liên kết sẽ có "liên kết Google LinkThis sẽ đưa bạn đến trang chủ của Google. "
Nếu không thực hiện một chuỗi các thao tác chuỗi (chẳng hạn như lấy văn bản của tất cả các trẻ em và trừ nó khỏi văn bản kết quả của phụ huynh), có cách nào để lấy văn bản từ phần tử gốc không?
đơn giản trả lời là: không có, bạn phải làm các thao tác chuỗi. Một câu trả lời có liên quan hơn sẽ là sự kết hợp của phương thức JavaScript và XPath substring-before(). http://zvon.org/comp/r/ref-XPath_2.html#Functions~substring-before Nhưng đó vẫn là thao tác chuỗi, chỉ ở một cấp độ khác. – SiKing
Cảm ơn! Giải pháp hiện tại của tôi là thực hiện xác minh "string.Contains()" đơn giản. Nhưng đó có thể là lỗi trong một số trường hợp. – Machtyn
có thể trùng lặp của [Làm thế nào để có được văn bản của một phần tử trong Selenium WebDriver (thông qua Python api) mà không bao gồm văn bản phần tử con?] (Http://stackoverflow.com/questions/12325454/how-to-get-text-of -an-element-in-selenium-webdriver-via-the-python-api-without) – Louis