我想使用XPath点击链接,但我找不到任何解决方案。 这是xpath
//td[text()='".$Variable."']/../td/div/a"
xpath工作正常,它会突出显示正确的元素。但是我无法点击它。 整个语法在这里
$this->click("xpath=//td[text()='".$Variable."']/../td/div/a");
当我尝试运行测试时,这是我收到的错误消息。
PHPUnit_Extensions_Selenium2TestCase_WebDriverException: java.lang.String cannot be cast to java.lang.Long
我读了一些文章,但大多数都使用java。我希望用PHP。
答案 0 :(得分:0)
我曾与Facebook php-WebDriver library合作。
这个解决方案对我来说很好:
$loginButtonCSS="#loginbutton";
$submitButton=driver->findElement(WebDriverBy::cssSelector(loginButtonCSS));
$submitButton->click();
替代使用xPath:
// NOTE: try to omit symbols ' in your xPath
$elementXpath= "xpath=//td[text()=".$Variable."]/../td/div/a";
$webElement= driver->findElement(WebDriverBy::xpath($elementXpath));
$webElement->click();
希望这会对你有所帮助。
答案 1 :(得分:0)
顺便说一下,这是另一个例子。 可能更适合你:
<?php
class GitHubTest extends PHPUnit_Framework_TestCase {
/**
* @var \RemoteWebDriver
*/
protected $webDriver;
public function setUp()
{
$capabilities = array(\WebDriverCapabilityType::BROWSER_NAME => 'firefox');
$this->webDriver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
}
public function tearDown()
{
$this->webDriver->close();
}
public function testSearch()
{
$this->webDriver->get($this->url);
// find search field by its id
$search = $this->webDriver->findElement(WebDriverBy::id('js-command-bar-field'));
$search->click();
$webElement = $this->webDriver->findElement(WebDriverBy::xpath('//*[@property="abracadabra"]'));
}
}
?>
所以你可以看到如何使用xPath定位元素。 此示例取自Working with PHPUnit and Selenium Webdriver。我想你也会觉得它很有帮助。
答案 2 :(得分:0)
如果您使用PHPUnit_Extensions_Selenium2TestCase
将表达式存储在变量
中$xpath="//input[@value='text']";
$this->byXPath($xpath)->click();
答案 3 :(得分:0)
似乎你没有扩展正确的课程。似乎您正在尝试使用selenium rc。如果要使用,则应扩展 PHPUnit_Extensions_SeleniumTestCase :
$this->click("//someXpath");
如果您正在使用php-webdriver,则必须扩展 PHPUnit_Framework_TestCase ,并且还要包含php facebook webdriver(或任何其他php-webdriver库)使用)。请记住,selenium RC测试不适用于webdriver,反之亦然。如您所见,他们有不同的方式来识别和与元素以及浏览器本身进行交互。有关硒和硒的更多信息phpunit,Here。