【问题标题】:In Selenium python, unable to select radio elements in Modal在 Selenium python 中,无法在 Modal 中选择单选元素
【发布时间】:2021-12-31 12:19:26
【问题描述】:

我正在尝试单击来自 MODAL 的单选按钮,但每次都会出现超时异常。

这是带有模态屏幕截图的 DOM 元素

我正在使用 PAGE OBJECT MODEL 设计模式,下面是代码。我正在尝试单击主输入定位器并选择主类。

Expitroy 等待:

def get_element_clickable(self, by_locator):
    WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable(by_locator))

在函数中调用定位器:

    def get_select_radio(self):
        return self.get_element_clickable(self.Select_radio_button_of_modal)

另外,试试这个:

def get_element_clickable(self, by_locator):
        WebDriverWait(self.driver, 30).until(EC.visibility_of_element_located(by_locator))

有人可以帮我建议如何解决这个问题吗?

【问题讨论】:

  • Select_radio_button_of_modal是如何定义的?
  • 这只是存储定位器值的变量。 Select_radio_button_of_modal = By.XPATH, "//input[@class='addRemoveEFAW' and @id='haveEfaw']"
  • my answer中的脚注

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

点击元素需要诱导WebDriverWaitelement_to_be_clickable(),可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.addRemoveEFAW#haveEfaw"))).click()
    
  • 使用XPATH

    WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='addRemoveEFAW' and @id='haveEfaw']"))).click()
    
  • 注意:您必须添加以下导入:

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

PS:当您使用 PAGE OBJECT MODEL 时,您必须在相应的 PageObject.py 页面中相应地定义它们。

【讨论】:

  • 发现错误 - TimeoutException: self = 方法 = ._predicate at 0x0000025D7FEE4DC0> message = ' '
  • 查看更新的答案并让我知道状态。
  • 同样的错误。我也尝试 time.sleep() 但不工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2017-04-05
相关资源
最近更新 更多