#python #selenium #xpath #webdriver #children
#python #селен #xpath #webdriver #дочерние элементы
Вопрос:
У меня есть немного кода, который находит элемент на основе видимого текста.
# Defines the text I am looking for
productName = "customer x job"
#Finds the element I am looking for
inputElement = driver.find_element_by_xpath(".//*[@id='demo_top']/div/table[2]/tbody/tr/td[1]/ul/li[2]/ul/li[1]/a".format(productName))
Мне нужно щелкнуть поле справа от этого.
Конкретный xpath элемента:
#What I just found
/html/body/div[1]/div/div/table[2]/tbody/tr/td[1]/ul/li[2]/ul/li[1]/a
#The box I actually want to click
/html/body/div[1]/div/div/table[2]/tbody/tr/td[1]/ul/li[2]/ul/li[1]/span/a
Поэтому мне просто нужно добавить «/span / a» в xpath inputElement . Проблема в том, что я не знаю конкретного xpath этого элемента. Есть ли у меня способ преобразовать inputElement в определенный xpath, чтобы я мог просто добавить «/ span / a» в конец и щелкнуть этот элемент?
Редактировать: кажется, я ошибся, мне нужно заменить последнюю букву «a» на «span / a».
Ниже приведен html:
<li class="TCbullet">
<span>
<a class="editCategory " onclick="return hs.htmlExpand(this, { objectType: 'iframe' } );" href="cat-frame-category.php?categoryID=1340"> </a> #I want to click this
<span class="sort">sort: 0</span>
</span>
<a class="anchorCategory" alt="Eden Cognitive Content" href="?ownerID=C518amp;g=1085amp;t=1340">Eden Cognitive Content</a> # I have found this
</li>
Я хочу получить доступ к ссылке editCatagory, и я нашел ссылку anchorCategory.
Ответ №1:
Вы можете вызвать find_element_by_xpath()
элемент, который вы уже нашли:
link = inputElement.find_element_by_xpath('./preceding-sibling::span/a')
Это позволит выбрать a
тег внутри span
, который следует a
за найденным вами тегом.
Комментарии:
1. Спасибо! Я не понимал, что могу это сделать. Кажется, я был в чем-то неправ, и вы можете помочь. Похоже, я пропустил, что в конце первого xpath есть тег a. Есть ли способ заменить этот последний ‘a’ на ‘span / a’?
2. @user3784334 не могли бы вы показать соответствующий html, чтобы я мог быть уверен в структуре html? Спасибо. Просто отредактируйте вопрос и вставьте его туда.
3. @user3784334 хорошо, похоже, что
span/a
передa
тем, как вы нашли, отредактировали ответ — попробуйтеpreceding-sibling
, должно сработать. Спасибо.