如何使用Selenium Python单击<a class href>链接问题

2024-10-02 00:23:27 发布

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

您好,我是Selenium Python Webdriver的新手。试图使用无效的find_element_by_link_text单击链接Abc

<a class="favorite-link " href="https://onesource.passporthealth.com/_members/query/osusf/Default.aspx?dlpvid=0000&amp;sid=-111111111">Abc</a>

我会感谢你的帮助。知道如何在这种情况下使用xpath吗

          <div id="favCol1" class="col-md-6 col-sm-6" style="padding: 2px; margin: 0px;">
                                    <div id="favId2861214" class="elig-item">
                                        <div title="Remove payer from favorites list" class="delete-favorite" data-itemname="Aetna" data-favid="2861214" data-dsid="28" data-lobid="1"></div>
                                        <a class="favorite-link " href="https://onesource.passporthealth.com/_members/query/osusf/Default.aspx?dlpvid=1111&amp;sid=-000000">Abc</a>
                                        <span class="side-text"></span>
                                    </div>

                                    
                                    <div id="favId2869169" class="elig-item">
                                        <div title="Remove payer from favorites list" class="delete-favorite" data-itemname="CIGNA" data-favid="2869169" data-dsid="317" data-lobid="1"></div>
                                        <a class="favorite-link " href="https://onesource.passporthealth.com/_members/query/osusf/Default.aspx?dlpvid=0000&amp;sid=-11111133323">efg</a>
                                        <span class="side-text"></span>
                                    </div>

                                    
                                    <div id="favId2861157" class="elig-item">
                                        <div title="Remove payer from favorites list" class="delete-favorite" data-itemname="Florida Blue" data-favid="2861157" data-dsid="35" data-lobid="1"></div>
                                        <a class="favorite-link " href="https://onesource.passporthealth.com/_members/query/osusf/Default.aspx?dlpvid=2323&amp;sid=-1111111">xyz</a>
                                        <span class="side-text"></span>
                                    </div>

                                    
                                    <div id="favId2861963" class="elig-item">
                                        <div title="Remove payer from favorites list" class="delete-favorite" data-itemname="Humana" data-favid="2861963" data-dsid="82" data-lobid="1"></div>
                                        <a class="favorite-link " href="https://onesource.passporthealth.com/_members/query/osusf/Default.aspx?dlpvid=1233&amp;sid=-000021212">HIJ</a>
                                        <span class="side-text"></span>
                                    </div>                             
                                </div>

尝试:

.find_element_by_xpath("//*[contains(@class, 'favorite-link') and contains(text(), 'Abc')]/a").click()

更新: 整个块被嵌入到一个iFrame中。这就是我无法访问的原因。必须切换到那个画面


Tags: texthttpsdivcomdatalinkqueryfavorite
2条回答

要单击文本为Abc的元素,可以使用以下任意一种Locator Strategies

  • 使用LINK_TEXT

    driver.find_element(By.LINK_TEXT, "Abc")
    
  • 使用XPATH

    driver.find_element(By.XPATH, "//div[@class='elig-item']//a[@class='favorite-link ' and text()='Abc']").click()
    

理想情况下,要单击元素,需要为^{}归纳WebDriverWait,并且可以使用以下Locator Strategies之一:

  • 使用LINK_TEXT

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Abc"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='elig-item']//a[@class='favorite-link ' and text()='Abc']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
 driver.find_element_by_link_text("Abc").click()

只需单击带有链接文本Abc的标记

 driver.find_element_by_xpath("//*[text()='Abc']").click()

相关问题 更多 >

    热门问题