Python Selenium - 按链接查找包含某些单词的元素

时间:2018-03-20 15:10:50

标签: python-3.x selenium selenium-chromedriver

我正在运行一个代码,该代码可以浏览文件夹并最终到达目的地并通过点击它来下载文件。

例如,要查找我正在使用的文件夹:

find_element_by_link_text("Pricing and Catalogs")

问题是该文件夹有时并非完全相同。例如,它有双倍空格。

所以我的问题是:是否可以通过包含某些单词的文本找到元素?例如这样的事情(我知道它不正确,我只是想让你了解我):

find_element_by_link_text(containing "Pricing" and "Catalogs")

我搜索了答案,但无法找到我想要的东西。 如果这是重复的,我道歉并要求指出正确的方向。

提前致谢!

编辑:使用find_element_by_partial_link_text不会这样做,因为其他文件夹名称中包含定价目录

<td class="ms-tv-item ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_2" style="white-space:nowrap;"><a class="ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_0 ms-tv-item ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_1" href="javascript:_spNavigateHierarchy(this,'','TAKES YOU TO SOME PAGE',false,'FolderNode', '')" title="Pricing  and  Catalogues" id="ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeViewt223" style="border-style:none;font-size:1em;">Pricing  and  Catalogues</a></td>

3 个答案:

答案 0 :(得分:1)

你可以试试XPath:

示例:

find_element_by_xpath("//a[contains(text(), 'Pricing') and contains(text(), 'Catalogues')]")

编辑您的拼写错误链接文字。代码有&#39;目录&#39;。但HTML有目录&#39;。更正了xpath。

答案 1 :(得分:1)

此外,用节点替换文本有时会更好:

使用示例:

find_element_by_xpath("//a[contains(node(), 'Pricing') and contains(node(), 'Catalogs')]")

答案 2 :(得分:0)

要点击包含文字定价目录的志愿元素,您可以使用以下任意一行代码:

  • LINK_TEXT

    WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.LINK_TEXT, "Pricing  and  Catalogues"))).click()
    
  • XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'Pricing') and contains(.,'Catalogs')]"))).click()
    
  • CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_0.ms-tv-item.ctl00_PlaceHolderLeftNavBar_ctl02_WebTreeView_1[title='Pricing  and  Catalogues']"))).click()