Python selenium通过某些innerHTML查找元素,然后查找父元素和子元素

时间:2018-03-09 11:09:56

标签: python selenium

目前我正在尝试在网站上找到一个可以通过其内部html识别的元素。找到这个项目后,我需要找到它的父母和一个孩子。

以下是示例,我需要使用不同的内容填充textarea,我找到正确的textarea的唯一方法是找到所需的td,可以通过其识别innerHTML

<tr>
  <td class="alignRight"> 1 </td>
  <textarea></textarea>
</tr>
<tr>
  <td class="alignRight"> 2 </td>
  <textarea></textarea>
</tr>
<tr>
  <td class="alignRight"> 3 </td>
  <textarea></textarea>
</tr>
<tr>
  <td class="alignRight"> 4 </td>
  <textarea></textarea>
</tr>

我尝试了一些解决方案,但到目前为止没有结果,我得到的最接近的是:

elem = driver.find_element_by_css_selector('td.alignRight').get_attribute('innerHTML')
print (elem, type(elem))

这里的问题是它只找到第一个元素。最好的事情是如果我能直接找到元素WHERE innterHTML = Value

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码,通过前面的兄弟texarea与特定td获取所需的value

value = "1"
driver.find_element_by_xpath("//td[.='%s']/following-sibling::textarea" % value)

答案 1 :(得分:0)

我不熟悉python,但我可以解释逻辑: -

  1. 使用值[1,2,3]创建动态Xpath以查找所需节点的兄弟节点,您可以在其中发送值作为参数。
  2. 使用xpath查找父节点。
  3. 发现孩子正在使用tagname
  4. 我尝试编写代码,语法可能不正确。

    value="what ever value you want to provide[1,2,]"
    requiredXpath=".//td[@class='alignRight' and text()="+value+"]"
    elem = driver.find_element_by_xpath(requiredXpath).find_element_by_xpath("..").find_element_by_tag_name("textarea)