尝试使用Python+XPath单击突出显示的文本?

2024-09-24 22:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

对编码和Python还比较陌生,我尝试使用find_element_by_xpath来单击突出显示的文本"Snoring Chin Strap by TheFamilyMarket"。你知道吗

    time.sleep(2)

    #btn = br.find_element_by_name("#Anti Snoring Chin Strap Kit")
    # btn = br.find_element_by_link_text('Snoring Chin Strap')

HTML代码:

<div class="tableD"> <div class="productDiv" id="productDiv69507"> <h2 class="productTitle" id="productTitle69507" onclick="goToProduct(7)">Snoring Chin Strap by TheFamilyMarket</h2> <img class="productImage" src="https://images-na.ssl-images-amazon.com/images/I/516fC3JruqL.jpg" onclick="goToProduct(7)"> <hr> <h4 class="normalPrice" id="normalPrice7" onclick="goToProduct(7)">Normally: <span class="currency">$ </span>19.99</h4> <h4 class="promoPrice" style="margin:2.5px auto;" id="promoPrice69507" onclick="goToProduct(7)">Your Amazon Price: <span class="currency">$ </span>1.99</h4> <h3>Your Total: <span class="currency">$ </span>1.99</h3> <p class="clickToViewP" id="cToVP69507" onclick="goToProduct(7)">Click to view and purchase!</p> </div> </div>

Tags: dividbyelementfindcurrencyh4class
2条回答

XPath有时很快就可以获得,因为你可以从浏览器中获得它,这就是为什么这么多人使用它,但从长远来看,学习JavaScript和CSS选择器可以在未来的许多情况下帮助你。 也可以通过选择所有h2元素并使用纯JavaScript查找文本并将结果传递给python来完成上述操作:

link_you_search = br.execute_script('''
links= document.querySelectorAll("h2");
for (link of links) if (link.textContent.includes("Chin Strap")) return link;
 ''')
link_you_search.click()

或者,您也可以按类选择:

link_you_search = br.execute_script('''
links= document.querySelectorAll(".productDiv");
for (link of links) if (link.textContent.includes("Chin Strap")) return link;
 ''')
link_you_search.click()

假设您的元素有一个id属性,通常是通过id选择的,这是最佳实践,因为它是最快的搜索,并且您应该只有一个id的元素,并且通常id在翻译等情况下不会经常更改,因此在您的情况下应该是:

link_you_search = br.find_element_by_id('productTitle69507')
link_you_search.click()
br.find_element_by_xpath("//h2[text()='Snoring Chin Strap by TheFamilyMarket']");

相关问题 更多 >