通过href属性的一部分查找元素

时间:2019-05-13 07:40:57

标签: python-3.x selenium xpath css-selectors webdriverwait

我正在尝试自动打开页面上的任何联系人菜单: 例如,我要转到“ http://www.bawnlodge.co.uk/”页面-然后,我想单击“联系人”标签

ATM我尝试了多种方法,例如:

driver.find_element_by_xpath("//*[contains(text(), 'onta')]").click()

driver.find_element_by_xpath('//a[contains(@href, "onta")]').click()

(和一些类似的东西)

但是到目前为止,我无法单击该元素

如果有人能向我解释为什么我在这里失败,我将不胜感激:/

3 个答案:

答案 0 :(得分:0)

尝试使用WebDriverWait和以下定位器策略。

element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,'//div[@class="right"]//ul[@id="menu-header-right"]//li/a[contains(.,"Contact")]')))
element.click()

您需要进行以下导入才能使用上述代码。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

答案 1 :(得分:0)

您可以使用更快的类或id CSS选择器

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.menu-item-26 a'))).click()

WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '#menu-item-100 a'))).click()

您还可以简单地将字符串“ contact”连接到“ http://www.bawnlodge.co.uk/”上,然后执行该操作。多字标签名以“-”连接,例如lodge-bar-and-kitchen。一切都是小写。

答案 2 :(得分:0)

要使用click()属性的一部分在文本为 CONTACT 的元素上调用href,则需要为所需的{引诱 WebDriverWait {1}},您可以使用以下任何Locator Strategies

  • 使用element_to_be_clickable()

    CSS_SELECTOR
  • 使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.container a[href*='contact']"))).click()

    XPATH
  • 注意:您必须添加以下导入:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='container']//a[contains(@href, 'contact')]"))).click()