Я использую Python 3.6.5 64bit и последнюю версию Selenium Webdriver и Google chromedriver.Моя IDE - это код Visual Studio.
Мне удалось найти и использовать каждый элемент, который мне нужен, из сотен в нескольких проектах веб-автоматизации.Я часто использую консоль разработчика Chrome для определения и проверки допустимых селекторов Xpath.
Теперь у меня есть элемент, который был идентифицирован и протестирован с помощью консоли разработчика Chrome, но он не работает в моем скрипте python.
Учитывая структуру HTML:
<html>
<head>...</head>
<body>
<form name='someform'>
<table>
<tbody>
<tr>
<th>
<font>...</font>
<br>
"
This is the text I am searching for."
</th>
</tr>
<tr>
<td>
Content I am using
</td>
</tr>
<tr>
<td>
Content I am using
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Консоли разработчика Chrome дают Xpath: "/ html / body / form / table 1 / tbody / tr 1 / th "и правильно идентифицирует элемент и может отображать все данные узла.
Также были протестированы различные версии содержимого (text (), «текст Я»), которые, конечно, все работают должным образом, наряду с двумя или тремя другими действительными селекторами Xpath.
Сценарий уже сделал сотни вызовов селена, когда я пришел к этому в своем коде:
try:
tableHeader = driver.find_element_by_xpath("/html/body/form/table[1]/tbody/tr[1]/th")
#grab tableHeader text and do something with it...
except:
print("Selenium Error:", sys.exc()[0])
И все эти действительные пути Xpath не работают:
Selenium Error: <class 'selenium.common.exceptions.NoSuchElementException'>
Страница, о которой идет речь, намного длиннее, чем в примере выше, но продолжает в той же простой структуре.Нет никаких iframes.
Я не могу найти никакой причины для этого, и меня еще больше расстраивает тот факт, что другая часть того же скрипта работает с другой страницей на том же сайте, которая имеет ТОЧНУЮ структуру, и я могуссылаться на точно такой же элемент на этой странице с точно таким же селектором Xpath без проблем.
Единственное, о чем я могу думать, это то, что элемент содержит возврат каретки / перевод строки перед текстом, как вы можете видеть выше,Я не понимаю, как это повлияет на идентификацию элемента.
Есть идеи?