我正在学习python并试图在单选按钮上进行基本点击。目前选择了“返回”单选按钮,而我希望选择“单向”单选按钮。但是,当我运行我的代码时,它声明它无法找到“单向”单选按钮。
我想问一下,我需要做些什么才能找到收音机,但隐藏在各种其他标签下呢?
以下是基本代码:
element = driver.find_element_by_xpath("//*[contains(@class, 'option')]")
one_way = element.find_element_by_id('one-way').click()
更新了代码(仍无效):
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.maximize_window()
driver.get("https://xxxxx/xxx/")
wait = WebDriverWait(driver, 10)
actions = ActionChains(driver)
# wait for the page to load
wait.until(EC.presence_of_element_located((By.ID, "search-form-content")))
# fill out the form
element = driver.find_element_by_id('one-way')
driver.execute_script('return arguments[0].scrollIntoView();', element)
element.click()
# previously just tried driver.find_element_by_id('one-way').click() and #one_way = driver.find_element_by_xpath("//div[@class_name='carat']/div[@class_name='option']/input[@id='one-way']").click()
答案 0 :(得分:0)
由于元素id
是唯一的,因此您实际上并不需要代码的第一行。使用:
element = driver.find_element_by_id('one-way')
这将选择所需的元素。但是,如果元素不在视图中(即在浏览器中不可见),则可能需要在单击之前滚动到该元素。为此,请使用:
driver.execute_script('return arguments[0].scrollIntoView();', element)
这会将元素滚动到视图中。然后,您可以使用以下命令单击它:
element.click()
答案 1 :(得分:0)
使用JAVASCRIPT / jQuery点击.. 即使你的元素不可见,它也会起作用。
driver.executeScript(“$ x('your xpath')[0] .click());
答案 2 :(得分:0)
默认情况下,Selenium不支持与不可见/隐藏元素进行交互。您可以获取选项的所有文本/值,但不能与它们进行交互。
隐藏此元素或选项的原因有好:用户可能不会选择它。例如,选项仅适用于高级用户。在这种情况下,执行验证检查的好的Web服务器将引发错误。
另一句话:
一般情况下,您可以使用选择元素的概念,如官方Selenium文档中所述(对于可见元素):
select = driver.find_element_by_tag_name("select")
allOptions = select.find_elements_by_tag_name("option")
for option in allOptions:
print "Value is: " + option.get_attribute("value")
option.click()