【问题标题】:driver.find_element_by_xpath does not click my element in selenium pythondriver.find_element_by_xpath 没有在 selenium python 中单击我的元素
【发布时间】:2020-04-12 17:44:01
【问题描述】:

我尝试了很多方法,但驱动程序没有点击我的元素。

done=driver.find_element_by_xpath("//button[@class='dimapply-btn']")
driver.execute_script("arguments[0].click();", done)

我也尝试过使用 WebDriverWait。

WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Done']"))).click()

我也用过 (x,y) 点。

done = driver.find_element_by_xpath('//body')
actions.move_to_element_with_offset(done, 320, 430).click().perform()

我的html代码是:

<div class="btn-apply" data-ng-click="applyDimensionChanges()" role="button" tabindex="0">
   <button class="dimapply-btn">Done</button>
</div>

它不会抛出任何错误。只是通过我的代码而不是点击。 请帮帮我。先感谢您。我正在解决这条线两天。

【问题讨论】:

  • Javascript 执行器不会抛出任何异常,如果它不能执行操作。你为什么不使用 selenium click() 方法?你检查过 iframe 吗?

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


【解决方案1】:

click()元素上的文本为完成按钮,您可以使用以下任一Locator Strategies

  • 使用css_selector

    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.btn-apply[data-ng-click^='applyDimensionChanges']>button.dimapply-btn"))).click()
    
  • 使用XPATH

    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='btn-apply' and starts-with(@data-ng-click, 'applyDimensionChanges')]/button[@class='dimapply-btn' and text()='Done']"))).click()
    
  • 注意:您必须添加以下导入:

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

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2016-02-19
    • 2021-12-09
    • 2021-12-28
    • 1970-01-01
    • 2020-05-24
    • 2022-01-05
    • 2016-11-14
    相关资源
    最近更新 更多