python - Selenium 没有通过链接文本找到元素

标签 python selenium google-chrome

我尝试使用 driver.find_element_by_partial_link_text('2019') 但我收到一条错误消息,说它无法找到该元素。我还尝试使用 find_element_by_link_text('') 并使用整行,但它不起作用。 想法?

driver.find_element_by_partial_link_text('2019').click()

这就是我一直在尝试但没有任何效果的方法。 这是网页 HTML:

<div class="rowOf" id="tableRow1">
    <div class="tableD">
        <div class="productDiv" id="productDiv92195">
            <h2 class="productTitle" id="productTitle92195" onclick="goToProduct(0)">2019 Wall Calendar by Camoleaf</h2>
            <img class="productImage" src="https://images-na.ssl-images-amazon.com/images/I/91j3pmPYDOL.jpg" onclick="goToProduct(0)">
            <hr>
            <h4 class="normalPrice" id="normalPrice0" onclick="goToProduct(0)">
                Normally: <span class="currency">$  </span>16.95
            </h4>
            <h4 class="promoPrice" style="margin:2.5px auto;" id="promoPrice92195" onclick="goToProduct(0)">
                Your Amazon Price: <span class="currency">$  </span>1.70
            </h4>
            <h3>Your Total: <span class="currency">$  </span>1.70</h3>
            <p class="clickToViewP" id="cToVP92195" onclick="goToProduct(0)">Click to view and purchase!</p>
        </div>
    </div>
    <div class="tableD">
        <div class="productDiv" id="productDiv69354">
            <h2 class="productTitle" id="productTitle69354" onclick="goToProduct(1)">Pure Lyft Energy Drink Mix (4 Pack) by PURELYFT</h2>
            <img class="productImage" src="https://images-na.ssl-images-amazon.com/images/I/81kCgs96Z0L.jpg" onclick="goToProduct(1)">
            <hr>
            <h4 class="normalPrice" id="normalPrice1" onclick="goToProduct(1)">
                Normally: <span class="currency">$  </span>9.99
            </h4>
            <h4 class="promoPrice" style="margin:2.5px auto;" id="promoPrice69354" onclick="goToProduct(1)">
                Your Amazon Price: <span class="currency">$  </span>0.99
            </h4>
            <h3>Your Total: <span class="currency">$  </span>0.99</h3>
            <p class="clickToViewP" id="cToVP69354" onclick="goToProduct(1)">Click to view and purchase!</p>
        </div>
    </div>
    <div class="tableD">
        <div class="productDiv" id="productDiv79478">
            <h2 class="productTitle" id="productTitle79478" onclick="goToProduct(2)">Multi-Purpose Calf Compression Sleeves by DS Sports</h2>
            <img class="productImage" src="https://images-na.ssl-images-amazon.com/images/I/91U7ExY-SfL.jpg" onclick="goToProduct(2)">
            <hr>
            <h4 class="normalPrice" id="normalPrice2" onclick="goToProduct(2)">
                Normally: <span class="currency">$  </span>12.95
            </h4>
            <h4 class="promoPrice" style="margin:2.5px auto;" id="promoPrice79478" onclick="goToProduct(2)">
                Your Amazon Price: <span class="currency">$  </span>5.05
            </h4>
            <h3>Your Total: <span class="currency">$  </span>5.05</h3>
            <p class="clickToViewP" id="cToVP79478" onclick="goToProduct(2)">Click to view and purchase!</p>
        </div>
    </div>
</div>

最佳答案

在您的示例 HTML 中,“2019”的唯一实例位于 <h2> 中。标记,而不是 anchor ( <a> ) 链接。自 find_element_by_partial_link_text()只搜索 anchor 标签,它不会找到它。

您可以通过 XPath 进行搜索,通过部分文本查找任意 元素。像这样:

all_matches = driver.find_elements_by_xpath("//*[text()[contains(., '2019')]]")
all_matches[0].click()

XPath 说:

  1. 搜索所有 元素 ( * )
  2. 查看每个项目的 text()反过来
  3. 如果text() contains()字符串“2019”,将其添加到匹配集中。

当然,我们只点击匹配的第一个元素。

关于python - Selenium 没有通过链接文本找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53991055/

相关文章:

google-chrome - 如何更改/自定义 Chrome 开发者工具的键盘快捷键?

javascript - Google chrome 扩展程序不执行 javascript 代码?

python - Scikit Learn - 交叉验证后对数据集进行评分

python - tkMessageBox 在定时器程序中有额外的窗口

python - Tkinter python GUI问题

python - 使用 Selenium Python 抓取 Web 时出现 Errno 61

html - 我可以使用 Selenium 2 获取 HTML 数据而无需打开新的浏览器窗口吗?

python - Beautifulsoup 使用页面源代码片段创建 Soup

javascript - JavaScript在Chrome中没有声音/在IE中不倒计时

python - 从元组列表中提取元组值