Невозможно изменить выбранный элемент в таблице с помощью Selenium Python - PullRequest
0 голосов
/ 01 февраля 2020

Я работаю с действительно устаревшим сайтом, который вызывает у меня проблемы. То, что я пытаюсь сделать, - это выбрать вкладку «Поиск / обоснование», как показано на: страница

Проблема в том, что нет идентификаторов. Без имени, ID и т. Д. c.

<table border="0" bgcolor="#ededed" cellpadding="8" cellspacing="0">
<tbody>
<tr>
        <td width="33%" bgcolor="#ededed" nowrap=""><b><font size="+1"><u>Case Search</u></font></b></td>
        <td width="33%" bgcolor="#cccccc" nowrap=""><a href="javascript:submitJudgementSearch();" target="_self"><b><font size="+1">Judgment/Lien Search</font></b></a></td>
        <td width="33%" bgcolor="#cccccc" nowrap=""><a href="javascript:submitPropertySearch();" target="_self"><font size="+1"><b>Property/Lis Pendens Search</b></font></a></td>
</tr>
</tbody>

Я пробовал использовать xpath, css селектор и даже просто выполнить скрипт. Я использовал ChroPath для получения правильной информации. Когда выбран <a href="javascript:submitJudgementSearch();" target="_self" xpath="1"><b><font size="+1">Judgment/Lien Search</font></b></a>, ChroPath дает мне следующие опции:

Rel XPath: //td[2]//a[1]

Abs Xpath: /html[1]/body[1]/table[1]/tbody[1]/tr[1]/td[2]/a[1]

CSS Селектор: table:nth-child(5) tbody:nth-child(1) tr:nth-child(1) td:nth-child(2) > a:nth-child(1)

Ничего из того, что фактически не работало при использовании параметров driver.find

Когда я пытаюсь просто выполнить javascript driver.execute_script("javascript:submitJudgementSearch();"), я получаю сообщение об ошибке: "selenium.common.exceptions.JavascriptException: Сообщение: javascript ошибка: submitJudgementSearch не определен ".

Есть идеи по другим способам его выбора? Или я смотрю на что-то не так? Эта неровность дороги действительно поставила меня в тупик. Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 февраля 2020

Вы можете использовать document.querySelector, чтобы выполнить работу потенциально, см. Фрагмент ниже. Я смог выбрать этот элемент, используя document.querySelector

document.querySelector('td a b').style.color = "red";
<table border="0" bgcolor="#ededed" cellpadding="8" cellspacing="0">
  <tbody>
    <tr>
      <td width="33%" bgcolor="#ededed" nowrap=""><b><font size="+1"><u>Case Search</u></font></b></td>
      <td width="33%" bgcolor="#cccccc" nowrap=""><a href="javascript:submitJudgementSearch();" target="_self"><b><font size="+1">Judgment/Lien Search</font></b></a></td>
      <td width="33%" bgcolor="#cccccc" nowrap="">
        <a href="javascript:submitPropertySearch();" target="_self">
          <font size="+1"><b>Property/Lis Pendens Search</b></font>
        </a>
      </td>
    </tr>
  </tbody>

Вот еще один пример здесь

И Документы Mozilla

0 голосов
/ 01 февраля 2020

Как насчет использования Атрибут начинается с селектора ?

Поскольку у ваших якорей, кажется, есть уникальные значения href, это может работать как селектор для самого якоря. Оттуда вы можете переместить дом к родителю, если <td> действительно то, что вам нужно.

$('a[href^="http://example.com/external/link"]').click(function() {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...