#python #api #selenium #automation #selenium-webdriver-python
Вопрос:
Я автоматизирую процесс, используя selenium с python. Но я кое в чем застрял. Я должен перейти по ссылке, используя selenium. Эта ссылка является href, и она будет создаваться динамически каждый раз. Ссылка href будет примерно 3. Для другой страницы это будет 66
Теперь, чтобы имитировать щелчок по этой ссылке, есть ли какой-нибудь способ щелкнуть по ней? Как получить динамически сгенерированную ссылку? Я использую код python для selenium webdriver.
Пример пробовал « self.driver.find_element(By.CSS_SELECTOR, "create_job_listing_ajax > div:nth-child(4) > div > div > div:nth-child(2) > center > a").click()
//скопированный URL-адрес как xpath
Комментарии:
1. Поделитесь URL-адресом, если это возможно, или HTML, кодом, который вы пробовали, и ошибкой.
2. пожалуйста, предоставьте ссылку на веб-сайт.
3. Наш API находится в стадии разработки и еще не запущен. мы запускаем сценарий selenium в локальной среде. Я поделюсь HTML-кодом для справки,<класс центра=»center_tag»> <класс центра=»center_tag»><стиль = «цвет: #3064f5!важно» id=»xyz_match» href=»/задания/xyz_match/116/»>1<стиль=»цвет: #3064f5!важно» id=»xyz_match» href=»/задания/xyz_match/116/»></a></a><Соответствие xyz <br> < / центр >
4. Попробовал код: self.driver.find_element_by_xpath(«//*[содержит(@href,’совпадение xyz’)]»).нажмите() и ошибка «2021-09-07 10:38:06,089 Сообщение: нет такого элемента: Не удается найти элемент: {«метод»:»xpath»,»селектор»:»//*[содержит(@href,’совпадение xyz’)]»} »
5. В соответствии с используемым вами селектором CSS, похоже
a
, что он находится в пределах несколькихdiv
тегов. Попробуйте отследитьa
метку с помощью этого. Что-то вроде этогоxpath
—//div[...]//a
Ответ №1:
вы написали очень сложно, сделайте это проще!
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, '#create_job_listing_ajax > div:nth-child(4) > div > div > div:nth-child(2) > center > a'))).click()
или
self.browser.find_element_by_css_selector('#create_job_listing_ajax > div:nth-child(4) > div > div > div:nth-child(2) > center > a').click()
Комментарии:
1. Привет, Вадим, я попробовал приведенный выше код и показал следующую ошибку: объект «TestLoginpage» не имеет атрибута «браузер»
2. попробуй это wiki.mozilla.org/Converting_IDE_scripts_to_Python
3. сделайте это, скопировав «селектор», не копируйте xpath
4. если вы копируете xpath, используйте его selenium-python.readthedocs.io/…
Ответ №2:
Так как нам не enough HTML
нужно должным образом давать то working xpath
или иное locater
, лучший способ-это использовать below xpath.
//div[@class='col']/center[@class='center_tag']/a
Видите, в конце концов мы можем добраться до a tag
того, у которого есть атрибут href
, который генерируется динамически.
Теперь вы всегда должны проверять HTML DOM.
Шаги для проверки :
Press F12 in Chrome -> go to element section -> do a CTRL F -> then paste and see `//div[@class='col']/center[@class='center_tag']/a` is getting highlighted or not.
также мы должны убедиться, что мы не получаем несколько узлов, использующих этот xpath. проверьте крайний правый, сколько у нас записей ? Это должно быть 1/1
сделано для того, чтобы это сработало.
Код :
self.driver.find_element(By.XPATH, "//div[@class='col']/center[@class='center_tag']/a").click()