gpt4 book ai didi

php - 单击后 Selenium php-webdriver 检查属性

转载 作者:搜寻专家 更新时间:2023-10-31 20:59:57 25 4
gpt4 key购买 nike

<a class="lnk" href="http://www.google.com">Go Google</a>

单击此链接时,将附加另一个 css 类“loading”。我们如何在重定向到 google.com 之前对此进行测试。

$element = $driver->findElement(WebDriverBy::className('lnk'));
$element->click();

有没有办法在重定向到目标之前检查类属性是否包含“正在加载”?

最佳答案

我对selenium和JavaScript不熟悉(包括英文,都是机器翻译过来的)。如有错误,请指正。

我觉得测试点击事件是很难访问到连接的,默认是用点击的。所以只要我们在测试点击前去掉默认点击,就可以进行想要的测试了。这是代码:HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style>
.loading{
font-size: 40px;
}
</style>
</head>
<body>
<a id="google" onclick="loading()" href="https://google.com">Google</a>
</body>
<script src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
function loading()
{
$("#google").attr('class', 'loading');
}
</script>
</html>

测试代码:

<?php
use Facebook\WebDriver\Firefox\FirefoxDriver;
use Facebook\WebDriver\Firefox\FirefoxProfile;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;

include './vendor/autoload.php';

$profile = new FirefoxProfile();

$caps = DesiredCapabilities::firefox();
$caps->setCapability(FirefoxDriver::PROFILE, $profile);

$driver = RemoteWebDriver::create('localhost:4444/wd/hub', $caps);

$driver->get("http://localhost/test.php");

$element = $driver->findElement(\Facebook\WebDriver\WebDriverBy::id('google'));

//Cancel the default click event to perform the test
$driver->executeScript(' document.testLinkClick = function (event){ event.preventDefault() } ');
$driver->executeScript(' $("#google").bind( "click", document.testLinkClick ); ');

$element->click();

$driver->wait(3, 500)->until(function () use ($element){
$class = $element->getAttribute('class');
if (strpos($class, 'loading') !== false) return true;
}, 'error');

//Restore the default click event to perform subsequent tests
$driver->executeScript('$("#google").removeClass("loading")');
$driver->executeScript('$("#google").unbind("click", document.testLinkClick)');

$element->click(); //继续你的测试

原谅我机器翻译英文英文

关于php - 单击后 Selenium php-webdriver 检查属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com