【问题标题】:Python selenium get element values from opened model gives unopened models valuesPython selenium 从打开的模型中获取元素值给出未打开的模型值
【发布时间】:2020-09-18 14:30:12
【问题描述】:

我在尝试使用 python 和 Selenium 从网页获取值时遇到了一个小问题。首先我必须说,写网页的人不是用最好的方式写的。 html 文件中的模型很少,我正在尝试从当前打开的模型中获取值。

for modal in driver.find_elements_by_class_name("modal"):
    if modal.value_of_css_property("display") == "block":
        location = modal.find_element_by_tag_name("p").get_attribute("textContent")
        phValue = modal.find_element_by_xpath("//table//tr[3]//td[2]").find_element_by_tag_name("p").get_attribute("textContent")

        print(location) // giving me the correct value
        print(phValue)  // giving me the wrong value

正如您在此处看到的,我正在获取所有模式并尝试使用 display css 属性获取活动模式。然后我将活动模式的段落标记值作为位置。它按我的需要工作,并为我提供当前打开的模式的段落标记值。每个模态都有一个表,在表内,我得到了一些值。但是 phValue 给了我当前 UNOPENED 模型的值而不是 Opened 的值。任何想法如何解决这个问题?
PS- 错误值在第一个模型中,目前没有打开。

感谢小伙伴们的帮助。

下面将是其中一种模式的 HTML 部分。文件中有很多与此相同的模态。 (部分数据采用 Unicode。)

<div id="Adayalachchena04" class="modal">
         <div class="modal-content">
            <span class="close" style="color:red">&times;</span>
            <h4 style="text-align: center;"><span style="text-decoration: underline;"><b>ගොවිජන සේවා බල ප්&zwj;රදේශ අනුව පොහොර නිර්දේශ භාවිතයේදී සැලකිය යුතු කරුණු</b></span></h4>
            <h4 style="text-align: center;">&nbsp;</h4>
            <p>ප&zwj;්&zwj;රාදේශීය ලේකම් කොට්ඨාශය - අඩයාලච්චේන<br />ග&zwj;්&zwj;රාම නිලධාරි වසම - අඩයාලච්චේන 04</p>
            <table class="table-responsive" style="height: 179px; margin-left: auto; margin-right: auto;" border="1">
               <tbody>
                  <tr style="height: 35px;">
                     <td style="height: 35px;" colspan="6">
                        <p style="text-align: center;">පස් පරීක්ෂණ ප&zwj;්&zwj;රතිඵල</p>
                     </td>
                  </tr>
                  <tr style="height: 48.6667px;">
                     <td style="height: 48.6667px;">
                        <p class="textD">පරාමිතිය</p>
                     </td>
                     <td style="height: 48.6667px;">
                        <p class="textD">පී. එච්. අගය</p>
                     </td>
                     <td style="height: 48.6667px;">
                        <p class="textD"> විද්&zwj;යුත් 
                           සන්නායකතාවය </br>
                           ඩෙසි සී / මී
                        </p>
                     </td>
                     <td style="height: 48.6667px;">
                        <p class="textD">පොස්පරස් කිලෝ 
                           ග&zwj;්&zwj;රෑමයට <br />
                           මිලි ග&zwj;්&zwj;රෑම්
                        </p>
                     </td>
                     <td style="height: 48.6667px;">
                        <p class="textD">පොටෑසියම්  කිලෝ 
                           ග&zwj;්&zwj;රෑමයට </br>
                           මිලි ග&zwj;්&zwj;රෑම් 
                        </p>
                     </td>
                     <td style="height: 48.6667px;">
                        <p class="textD">කාබනික 
                           ද්&zwj;රව්&zwj;ය 
                        </p>
                     </td>
                  </tr>
                  <tr style="height: 35px;">
                     <td style="height: 70px;" rowspan="2">පසේ තත්වය</td>
                     <td style="height: 35px;">
                        <p>5.0</p>
                     </td>
                     <td style="height: 35px;">
                        <p>0.070</p>
                     </td>
                     <td style="height: 35px;">
                        <p>46.0</p>
                     </td>
                     <td style="height: 35px;">
                        <p>265.0</p>
                     </td>
                     <td style="height: 35px;">
                        <p>3.4</p>
                     </td>
                  </tr>
               </tbody>
            </table>    
         </div>
      </div>

【问题讨论】:

  • 可以添加 HTML sn-p 吗?
  • @AlinStelian,您好,感谢您的回复。我刚刚将 html 部分添加到原始帖子中。请看一看。谢谢
  • 我没有看到任何名为“modal”的类名,但有“modal-content”,试试看。
  • @AlinStelian 对不起,伙计,我错过了主 div。请立即检查。我已经编辑了。

标签: python selenium loops if-statement selenium-webdriver


【解决方案1】:

为了获取该元素,您可以使用 CSS 选择器而不是 XPath

    phValue = modal.find_element_by_css_selector("table tbody tr:nth-of-type(3) td:nth-of-type(2) p").get_attribute("textContent")

我无法测试,因为我没有应用链接。

【讨论】:

  • 天啊。它是工作伙伴。谢谢。你能告诉我,为什么我们不能使用 xpath?
  • 我的猜测是 XPATH 不知道你想要明确的模式,所以它会先匹配 DOM 的任何字符串,而且 CSS 比 XPath 更有效。
猜你喜欢
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 2021-12-09
  • 2012-09-17
  • 1970-01-01
相关资源
最近更新 更多