选择动态ID

时间:2016-03-03 19:29:05

标签: selenium-webdriver selenium-chromedriver

<div class="html5-video-player iv-module-created iv-module-loaded endscreen-created paused-mode" tabindex="-1" id="player_uid_960859542_1" data-version="//s.ytimg.com/yts/jsbin/player-en_US-vfl_cdzrt/base.js" aria-label="YouTube Video Player">

我有办法选择上面的元素吗? id每次都是随机生成的,是css选择器(#player_uid_960859542_1)和xpath(// * [@ id =&#34; player_uid_960859542_1&#34;])。我尝试过使用该课程,但它是一个复合名称。我试过By.cssSelector(".html5-video-player.iv-module-created.iv-module-loaded.endscreen-created.paused-mode"),但也失败了。

1 个答案:

答案 0 :(得分:0)

提到的XPath和CSS路径不起作用,因为ID的值是动态生成的,并且XPath和CSS都设计为使用ID值来在使用firebug时生成路径。但是你可以尝试这个XPath:  //*[@data-version='//s.ytimg.com/yts/jsbin/player-en_US-vfl_cdzrt/base.js'][@aria-label='YouTube Video Player]如果它不起作用你可以选择在DOM中找到一个稳定的元素,然后有一个移动父节点,子节点或兄弟节点的特权(观看视频以获取更多细节;链接在下面)。

早些时候我遇到了类似的问题,经过大量研发后我发现了很多方法来处理它使用XPath和CSS选择器定制。 我制作了一个视频,以获得更多的见解。观看这两个视频: Create XPath for dynamic elementsCreate CSS path for dynamic elements

我相信它会帮助你,因为有很多方法可以设计路径来接触这个元素。