невозможно выбрать элемент с помощью xpath с использованием селена - PullRequest
2 голосов
/ 24 апреля 2020

Я пытаюсь автоматизировать процесс, используя селен, и мне удалось открыть веб-страницу и щелкнуть ссылки, однако я наткнулся на таблицу, в которой нужно нажать на ссылку, но я не могу выбрать эту ссылку и получаю ошибку. Мне нужна помощь, чтобы выбрать этот конкретный элемент

, сейчас это то, что я сделал

elem2=browser.find_elements_by_xpath('/html/body/div[3]/table/tbody/tr[1]/td[2]/div[2]/table/tbody/tr[7]/td[3]/a::text')
elem2.click()

, вы можете видеть на картинке, что я пытаюсь получить доступ к находке html. ссылка организации.

ошибка, которую я получаю:

InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression /html/body/div[3]/table/tbody/tr[1]/td[2]/div[2]/table/tbody/tr[7]/td[3]/a::text because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '/html/body/div[3]/table/tbody/tr[1]/td[2]/div[2]/table/tbody/tr[7]/td[3]/a::text' is not a valid XPath expression.
  (Session info: chrome=81.0.4044.113)

enter image description here

Ответы [ 3 ]

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

Сначала вам нужно переключиться на iframe

Пример:

frame = browser.find_elements_by_xpath('//iframe[contains(@src, \'hbx.media.net\')]')
browser.switch_to.frame(frame)

Теперь вы можете нажать

link = browser.find_elements_by_xpath('//a[contains(@href, \'http://www.findhtml.org\')]')
link.click()
1 голос
/ 24 апреля 2020

Чтобы перейти по указанной ссылке c, попробуйте следующий код.

Induce WebDriverWait () и presence_of_element_located () и следующий xpath.

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

driver = webdriver.Chrome()
driver.get("https://publicrecords.netronline.com/state/IL/county/dupage")
element=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"//a[@href='http://www.dupageco.org/PropertyInfo/PropertyLookUp.aspx' and contains(.,'Go to Data')]")))
element.location_once_scrolled_into_view
element.click()

Обратите внимание на элемент не внутри любого iframe

1 голос
/ 24 апреля 2020
browser.get('https://publicrecords.netronline.com/state/IL/county/dupage')

wait = WebDriverWait(browser, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//td[contains(text(),'DuPage Supervisor of Assessments')]//following-sibling::td[2]//a"))).click()

вывод:

enter image description here

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

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...