Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么硒会改变元素';s href?_Javascript_Jquery_Selenium - Fatal编程技术网

Javascript 为什么硒会改变元素';s href?

Javascript 为什么硒会改变元素';s href?,javascript,jquery,selenium,Javascript,Jquery,Selenium,我正在使用selenium检查web元素,然后获取其“href” 为什么我得到的结果是…当前url…#而不是我在浏览器控制台中看到的jut# <a class="action-btn big-button btn-phone take-button v3" data-model="{&quot;analytics_url&quot;:&quot;/coupons/use?action_source=popup&amp;cookie=..uot;],&

我正在使用selenium检查web元素,然后获取其
“href”

为什么我得到的结果是
…当前url…#
而不是我在浏览器控制台中看到的jut
#

<a class="action-btn big-button btn-phone take-button v3" data-model="{&quot;analytics_url&quot;:&quot;/coupons/use?action_source=popup&amp;cookie=..uot;],&quot;redirect_url&quot;:null}" href="#">
    <div class="btn-text">
        <span>Call Now</span>
    </div>
</a>

我可能错了,但我认为这是因为

driver.findElement(getSelectorForButton(name));
不返回DOM元素,但使用
('href')
参数调用的
getAttribute
属性(方法)的selenium包装器不会返回
href
属性内容,而是返回
href
属性内容

href
属性由浏览器自动为href中的每个相对/绝对路径“填充”匹配前缀

举例如下:

HTML:

此处演示:

原因是(根据文档)

此方法将返回给定属性的值,除非该属性不存在,在这种情况下,将返回同名属性的值(例如,对于textarea元素的“value”属性)。如果两个值都未设置,则返回null

getAttribute首先在DOM中查找该属性,如果可以看到href,它包含完整的web url


例如:如果您查看活动选项卡,您会看到href=“/questions/28339297/为什么selenium会更改元素href?answertab=active#tab top”,但是如果你看一下DOM,你会发现这个href被附加到

供参考,你的HTML是无效的-内联元素(
a
)中不能有块级元素(
div
)应该在@RoryMcCrossan(和帮手)之外:实际上,它在HTML5中是有效的。我希望你们现在都写HTML5;-)
driver.findElement(getSelectorForButton(name));
<a href="#" id="link1">Test</a>
<a href="./uri" id="link2">Test</a>
<a href="/uri" id="link3">Test</a>
var a = document.getElementById('link1');
console.log(a.href); // '...Whatever_your_url_is...#'
console.log(a.getAttribute('href')); // '#'

var b = document.getElementById('link2');
console.log(b.href); // '...Whatever_your_url_is.../uri'
console.log(b.getAttribute('href')); // '/uri'

var c = document.getElementById('link3');
console.log(c.href); // '...Whatever_your_domain_and_port_is.../uri'
console.log(c.getAttribute('href')); // './uri'