Трудность в написании xpath с использованием Selenium с Java - PullRequest
2 голосов
/ 21 апреля 2020

На этой странице https://www.bestbuy.ca/en-ca/category/laptops-macbooks/20352 (это страница результатов поиска для ноутбуков, на которой перечислены многие ноутбуки, и я пытаюсь получить именно этот)

WebElement - 'HP 15,6-дюймовый ноутбук - серебристый (Intel Core i3-1005G1 / 256 ГБ SSD / 8 ГБ ОЗУ / Windows 10) с использованием xpath и ниже - мой xpath:

//div[contains(text(),'HP 15.6" Laptop - Silver (Intel Core i3-1005G1/256GB SSD/8GB RAM/Windows 10)')]

Этот xpath правильно идентифицирует элемент но когда я вставляю этот xpath в затмение, он добавляет обратную косую черту \ после 15,6 (то есть 15,6 \ ") в

xpath("div[contains(text(),'HP 15.6\" Laptop - Silver (Intel Core i3-1005G1/256GB SSD/8GB RAM/Windows 10)')]"))

, и именно поэтому мой код выбрасывает элемент, не найденный в исключении. Кто-нибудь может помочь мне решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

15.6\" - это правильно то, что отображается в eclipse. Поэтому он экранирует встроенные кавычки для вас. В противном случае это вызовет синтаксическую ошибку в Eclipse IDE.

Вызовите WebDriverWait () и дождитесь elementToBeClickable (), а затем нажмите.

new WebDriverWait(driver, 30).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[contains(text(),'HP 15.6\" Laptop - Silver (Intel Core i3-1005G1/256GB SSD/8GB RAM/Windows 10)')]"))).click();
1 голос
/ 21 апреля 2020

Вы можете использовать ниже xpath, чтобы найти свой веб-элемент (python):

wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[contains(text(),'HP 15.6" Laptop - Silver (Intel Core i3-1005G1')]")))

Примечание: , пожалуйста, добавьте ниже импорта в ваше решение

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

если вы используете java, вы можете использовать следующий код, чтобы найти ваш элемент:

driver.findElement(By.xpath(//div[contains(text(),'HP 15.6" Laptop - Silver (Intel Core i3-1005G1')]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...