我正在使用Python/Selenium和Chrome webdriver,并且我试图根据一个<td>
的内容从另一个<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和脚本执行器来说,这很简单:
with open('jquery-3.2.1.min.js', 'r') as jquery_js:
jquery = jquery_js.read() #read the jquery from a file
driver.execute_script(jquery) # activate the jquery lib
driver.execute_script("$('div.targetclass a[href$=\"target@email.com\"]').parents(\"tr\").find(\"a:first\").attr('href')")
但是,当我尝试存储返回的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来操作它?
发布于 2018-06-26 04:36:15
一种方法是使用如下所示的javascript来获取表行以及前面的答案步骤。WebDriver没有自己的“父”方法。
div = driver.find_element_by_class_name("targetclass")
targeta = div.find_element_by_link_text("target@email.com")
tr = self.driver.execute_script("return arguments[0].parentNode.parentNode;", targeta)
然后,您可以在行中查找元素。
或者您可以尝试"return arguments.parentNode;“,它应该获取td,然后尝试获取上一个同级,但我还没有尝试过。
https://stackoverflow.com/questions/43836825
复制相似问题