首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字符串从JS传递给Python Selenium

将字符串从JS传递给Python Selenium
EN

Stack Overflow用户
提问于 2017-05-08 05:18:51
回答 1查看 466关注 0票数 1

我正在使用Python/Selenium和Chrome webdriver,并且我试图根据一个<td>的内容从另一个<td>中检索url。我的标记如下所示:

代码语言:javascript
复制
<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和脚本执行器来说,这很简单:

代码语言:javascript
复制
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一起使用时,我得到了以下结果:

代码语言:javascript
复制
aurlval = driver.execute_script("$('div.targetclass a[href$=\"target@email.com\"]').parents(\"tr\").find(\"a:first\").attr('href')")
print (aurlval)

返回值为

代码语言:javascript
复制
None

我如何存储目标url (retrieve@email.com),以便我可以用webdriver来操作它?

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 04:36:15

一种方法是使用如下所示的javascript来获取表行以及前面的答案步骤。WebDriver没有自己的“父”方法。

代码语言:javascript
复制
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,然后尝试获取上一个同级,但我还没有尝试过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43836825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档