2

我有许多页面元素,我想将它们存储在一个变量中并使用 Selenium Webdriver PHP 循环。

例如:

< cite > Name 1 < /cite >
< cite > Name 2 < /cite >
<cite > Name 3< /cite >

我正在使用以下代码,但它没有给我上面的结果(即名称 1)等。如何使用 Selenium Webdriver 从元素中获取文本。

$users = $driver->findElements(
  WebDriverBy::xpath('//cite')
)->getText();
foreach($users as $u)
         {
             echo $u;
         }

我正在使用 Selenium Webdriver Facebook包装器

4

3 回答 3

3

我真的不知道 PHP,但在 Java 中,你会做类似的事情:

List<WebElement> elements = driver.findElements(By.xpath("//cite"));
for (WebElement element: elements) {
  System.out.println(element.getText());
}

鉴于此,我假设 PHP 等效项是这样的:

$users = $driver->findElements(WebDriverBy::xpath('//cite'));
foreach($users as $u)
  {
    echo $u->getText();
  }
于 2013-10-22T15:48:17.350 回答
1

JimEvan 的回答是正确的。如果你得到一个“非对象”类型的错误,你应该检查以确保 findElements() 调用实际上返回了一些东西:

$users = $driver->findElements(WebDriverBy::xpath('//cite'));
fwrite(STDOUT, "Number of users: " . count($users));

也许它与元素标签中的空格字符有关(只是猜测)?

于 2014-10-09T15:41:11.470 回答
0

正确的代码是。

$users = $driver->findElements(WebDriverBy::xpath('//cite')); foreach($users as $u) {echo $u->getText();}
于 2021-09-26T21:39:29.603 回答