对于我的练习,我必须使用selenium和Chrome webdriver与python 2.7点击链接:
html文件的结构:
<div class="leftside" >
<span class="spacer spacer-20"></span>
<a href="https://test.com" title="Retour à l'accueil"><img class="logo" src="https://img.test.com/frontoffice.png" /></a>
<span class="spacer spacer-20"></span>
<a href="https://test.com/console/index.pl" class="menu selected"><img src="https://img.test.com/icons/fichiers.png" alt="" /> Mes fichiers</a>
<a href="https://test.com/console/ftpmode.pl" class="menu"><img src="https://img.test.com/icons/publication.png" alt="" /> Gestion FTP</a>
<a href="https://test.com/console/remote.pl" class="menu"><img src="https://img.test.com/icons/telechargement-de-liens.png" alt="" /> Remote Upload</a>
<a href="https://test.com/console/details.pl" class="menu"><img src="https://img.test.com/icons/profil.png" alt="" /> Mon profil</a>
<a href="https://test.com/console/params.pl" class="menu"><img src="https://img.test.com/icons/parametres.png" alt="" /> Paramètres</a>
<a href="https://test.com/console/abo.pl" class="menu"><img src="https://img.test.com/icons/abonnement.png" alt="" /> Services Payants</a>
<a href="https://test.com/console/aff.pl" class="menu"><img src="https://img.test.com/icons/af.png" alt="" /> Af</a>
<a href="https://test.com/console/com.pl" class="menu"><img src="https://img.test.com/icons/v.png" alt="" /> V</a>
<a href="https://test.com/console/logs.pl" class="menu"><img src="https://img.test.com/icons/logs.png" alt="" /> Jour</a>
<a href="https://test.com/logout.pl" class="menu"><img src="https://img.test.com/icons/deconnexion.png" alt="" /> Déconnexion</a>
<span class="spacer spacer-20"></span>
<a href="#" id="msmall"><img src="https://img.test.com/btns/reverse.png"></a>
</div>
我使用: driver.find_element_by_xpath(),如下所述:enter link description here
driver.find_element_by_xpath('//[@id="leftside"]/a[3]').click()
但是我有这样的错误信息:
SyntaxError:无法执行&#39;评估&#39; on&#39; Document&#39;:字符串 &#39; // [@ ID =&#34;莱夫特赛德&#34;] / [3]&#39;不是有效的XPath表达式。
谁可以帮助我?
此致
答案 0 :(得分:1)
我觉得你很亲密。但由于<{1>}标记 class 属性设置为 leftside ,因此您必须具体。但同样<div>
标记不会是<a[3]>
节点的直接子节点,而是一个后代节点,因此不必driver.find_element_by_xpath("//div[@class='leftside']
而是/
,而不是//
如下:
driver.find_element_by_xpath("//div[@class='leftside']//a[3]").click()
答案 1 :(得分:0)
问题是你还需要一个标签名称。所以你应该使用
driver.find_element_by_xpath('//*[@id="leftside"]/a[3]').click()
当你不关心它是哪个标签时。或者,如果您愿意,您应该使用实际标签
driver.find_element_by_xpath('//div[@id="leftside"]/a[3]').click()
我建议不要使用带有div
标记的第二个。由于xpath较慢并且使用*
可能会稍慢一些