我将Python/Selenium与Chrome webdriver一起使用,并尝试根据另一个<td>
的内容检索一个url。我的标记看起来像:
<div class="targetclass">
<tr>
<td><a href="retrieve@email.com">emailval2</a></td>
<td><a href="target@email.com">emailval</a></td>
</tr>
</div>
使用jQuery和脚本执行器很容易做到:
^{pr2}$但是,当我尝试存储返回的href以与webdriver一起使用时,我得到了以下结果:
aurlval = driver.execute_script("$('div.targetclass a[href$=\"target@email.com\"]').parents(\"tr\").find(\"a:first\").attr('href')")
print (aurlval)
返回值为
None
如何存储目标url(retrieve@email.com
),以便使用webdriver对其进行操作?在
我对Selenium的经验仅限于一些利基案例,在这些案例中,我希望实现一些自动化(对于抓取,我通常可以通过请求和美化组来实现),但我相信您得到无的原因是
execute_script
没有返回一个值开始(您的脚本基本上只是被注入到网页中在浏览器中执行)。Iirc,您应该能够将jquery解析为(详细地):如果Selenium对list和first元素有单独的方法,我想不起来了,所以您可能必须在这些行上使用零索引。在
一种方法是使用下面的javascript获取表行以及前面的答案步骤。WebDriver没有自己的“parent”方法。在
然后可以在行中找到元素。在
或者您可以尝试“return arguments[0].parentNode;”,它应该获取td,然后尝试获取以前的同级,但我没有尝试过。在
相关问题 更多 >
编程相关推荐