因此,我尝试了几乎所有我知道的包括xpath在内的所有方法。它应该是一个简单的find元素,然后单击,仅此而已,但我无法弄清楚。
这是我的代码
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()
答案 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()