为什么找不到硒元素?

时间:2019-11-20 06:16:17

标签: python selenium selenium-firefoxdriver

因此,我尝试了几乎所有我知道的包括xpath在内的所有方法。它应该是一个简单的find元素,然后单击,仅此而已,但我无法弄清楚。

enter image description here

这是我的代码

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

ff_options = Options()

#profile
binary = FirefoxBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe")
profile = webdriver.FirefoxProfile('C:\\Users\\bravoj\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\7k4o5psw.CCC Deafualt')
ff_driver = webdriver.Firefox(executable_path='C:\\Users\\bravoj\Downloads\\geckodriver.exe')
#fire fox driver
ff_driver.get('about:profiles')
#ff_driver.get('about:preferences#home')

ff_driver.find_element_by_id('profiles-set-as-default').click()

也有重复的代码 enter image description here

2 个答案:

答案 0 :(得分:2)

'profiles-set-as-default'不是id属性,它是data-l10n-id属性。您可以使用css_selector进行定位,并使用带有data-l10n-args {CCC Deafult}的上一个Brother元素来获得唯一元素

ff_driver.find_element_by_css_selector('[data-l10n-args*="CCC Deafult"] ~ [data-l10n-id="profiles-set-as-default"]')

答案 1 :(得分:0)

文本为设置为默认配置文件的元素是动态元素,因此必须在该元素上定位click()并为{引出 WebDriverWait {1}},您可以使用以下任何Locator Strategies

  • 使用element_to_be_clickable()

    CSS_SELECTOR
  • 使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.tab#profiles button[data-l10n-id='profiles-set-as-default']"))).click()

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@data-l10n-id='profiles-set-as-default' and text()='Set as default profile']"))).click()