【问题标题】:how to fix "element could not be scrolled into view" radio button in python selenium [duplicate]如何修复python selenium中的“元素无法滚动到视图中”单选按钮[重复]
【发布时间】:2019-09-24 16:51:21
【问题描述】:

我正在通过单击“是”创建一个单击单选按钮的测试

单选按钮代码:


<div role="group" class="btn-group btn-group-toggle">
 <label class="btn btn-primary">
 <input name=".product2" autocomplete="off" value="true" type="radio"> Yes </label>

我已经试过了:

time.sleep(3)
driver.find_element_by_css_selector("input[name*='product2'] [value='true']").click();

但它返回一个错误:

元素&lt;input name=".product2" type="radio"&gt; 无法滚动到视图中

还有其他选择器可以用来点击“是”吗? 还是使用 css 选择器缺少细节?

我也试过find_element_by xpath,结果还是一样。

【问题讨论】:

  • 如果该元素在当前窗口中不可见,则首先您需要滚动到该位置,然后您可以选择单选按钮。这是可能的解决方案stackoverflow.com/a/41744403/2845389

标签: python selenium


【解决方案1】:

你可以试试这个css选择器:

label.btn.btn-primary input  

如果你也可以使用 WebDriverWait 那就太好了。

wait = WebDriverWait(driver, 10)

element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label.btn.btn-primary input")))

element.click()  

方法二:

或者您也可以尝试使用 ActionChains:

actions = ActionChains(driver)
wait = WebDriverWait(driver, 10)

element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "label.btn.btn-primary input")))
actions.move_to_element(element).perform()

element.click()

进口将是:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.action_chains import ActionChains  

希望对你有帮助

【讨论】:

  • 嗨!这很有效,谢谢 :) 但随后,有多个 class label 是用完全相同的单选按钮构造的,唯一不同的是 name 。如何使用name 单击我想要单击的特定单选按钮?用css选择器可以吗?例如:3个单选按钮,语法相同,唯一不同的是name.product1.product2.product3如何点击第二个按钮name='.product2'
  • 是的,可以使用 css 选择器 label.btn.btn-primary input[name='.product1'] ,您可以像这样更改名称属性。如果这个答案对你有帮助,请点击我的答案旁边的复选标记给我。
【解决方案2】:

@cruisepandey 的答案似乎是正确的,如果它有效,那很好,但如果仍然无效,您可以使用 javascriptexecutor

element=driver.find_element_by_css_selector("input[name*='product2'] [value='true']") 
driver.execute_script("arguments[0].click();", element)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-15
    • 2019-05-28
    • 2019-08-24
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2019-06-28
    相关资源
    最近更新 更多