Почему действительный xpath в консоли разработчика chrome не распознается селеном / python / chromedriver? - PullRequest
0 голосов
/ 04 октября 2018

Я использую 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 "и правильно идентифицирует элемент и может отображать все данные узла.enter image description here

Также были протестированы различные версии содержимого (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 без проблем.

Единственное, о чем я могу думать, это то, что элемент содержит возврат каретки / перевод строки перед текстом, как вы можете видеть выше,Я не понимаю, как это повлияет на идентификацию элемента.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

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

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

0 голосов
/ 04 октября 2018

Вы пытались найти список элементов на активной странице и посмотреть, содержит ли какой-либо из них искомый элемент?

tableHeaders = driver.find_elements_by_tag_name('th')

Вы должны иметь возможность перемещаться по tableHeaders и находить элементгде значение Text соответствует желаемому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...