(NodeJS) Selenium Webdriver findElement.By.css () возвращает только одно значение, когда на странице их несколько. - PullRequest
0 голосов
/ 24 октября 2018

Вот блок кода, о котором идет речь:

var webdriver = require('selenium-webdriver')
var chrome = require('chromedriver')

const driver = new webdriver.Builder()
    .forBrowser('chrome')
    .build()

driver.get("http://thewebsite.com").then(x => {
  driver.findElement(webdriver.By.css("[title^='ANI:']")).then(selObject => {
     console.log(selObject)
     selObject.getAttribute("title").then(x => console.log(x))
  }) 
})

А вот источник страницы, который я пытаюсь извлечь:

<tbody id="CONFGROUP_0">               
    <!-- dynamic content here -->
    <tr id="35534" style="background-color: rgb(228, 225, 229);">
    <td nowrap="" valign="middle" height="30" width="210" title="ANI: 7076  DNIS: 7791" style="font-size: 0.8em;"><div style="overflow: hidden; display: inline; float: left; padding-top: 3px; width: 210px;"><div style="display: inline; padding-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;">SOC&nbsp;OPS ALERT</div><input type="text" maxlength="50" style="display: none;"></div><div style="display: none; float: right; padding-right: 10px; height: 30px;"><img src="images/talkshow/03_buttonlower_on.gif" style="margin-top: 6px;"></div></td>
    </tr>
    <tr id="35533" style="background-color: rgb(255, 255, 255);">
    <td nowrap="" valign="middle" height="30" width="210" title="ANI: 8017057799  DNIS: 7076" style="font-size: 0.8em;"><div style="overflow: hidden; display: inline; float: left; padding-top: 3px; width: 210px;"><div style="display: inline; padding-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;">8017057799</div><input type="text" maxlength="50" style="display: none;"></div><div style="display: none; float: right; padding-right: 10px; height: 30px;"><img src="images/talkshow/03_buttonlower_on.gif" style="margin-top: 6px;"></div></td>
    </tr>
    </tbody>

Когда я запускаю document.querySelectorAll("[title^='ANI:") в консоли Chrome, он возвращает оба необходимых мне элемента.Однако, когда я запускаю findElement, найденный в блоке кода выше, он возвращает только один объект.Если я запусту driver.executeScript("document.querySelectorAll(\"[title^='ANI:\")"), это вернет null.

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

Любая помощь будет очень признательна.

1 Ответ

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

Оказывается findElements существует, а я идиот.Спасибо всем

elements = driver.findElements(webdriver.By.css("[title^='ANI:']"))

...