我正在尝试根据他的文本值选择一个单选按钮。
在此site上 我跳过此代码的第一页(因为它是一个框架)
driver.switch_to_frame(0)
elem = driver.find_element_by_id("bedin")
elem.click()
clickWeiter()
之后,我想单击一个带有特定文本的单选按钮,例如“公共汽车”
我的问题是,实际的单选按钮在标签中
<input type="radio" name="mittel" value="2" onclick="zweiSelect4('neu',2);document.form1.linie.disabled=false;">
但是可读文本“ Bus”在td标签中
<td height="36" align="left" class="Stil1"><input type="radio" name="mittel" value="2" onclick="zweiSelect4('neu',2);document.form1.linie.disabled=false;">Bus </td>
到目前为止,我设法根据他的值而不是文本单击单选按钮
driver.find_element_by_css_selector("input[type='radio'][value='2']").click
或者我设法得到了文字,但无法点击
list = driver.find_elements_by_tag_name("td")
for i in list:
searchval =("Bus")
if searchval in str(i.text):
print(" BULLSEYE" , i.text)
i.click()
我的目标是要具有一个功能,该功能可以传递所需的文本(Sonstiges,Bus等),然后单击该元素。
答案 0 :(得分:1)
您可以使用此 xpath :
//td[contains(text(),'Bus')]/input
在代码中:
driver.find_element_by_xpath("//td[contains(text(),'Bus')]/input").click()
如前所述,您想要一个方法,可以尝试:
visible = "Bus"
driver.find_element_by_xpath("//td[contains(text(),'"+visible+"')]/input").click()
方法:
def myfunc(visible):
driver.find_element_by_xpath("//td[contains(text(),'"+visible+"')]/input").click()
然后,您可以使用所需的文本来调用此方法。
希望这会有所帮助。
更新:
这些是文本节点,您可以尝试类似:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(executable_path = r'C:/chromedriver_win32/chromedriver.exe')
driver.maximize_window()
wait = WebDriverWait(driver,40)
driver.get("http://nvv31.webqms.de/nvv/kunden/")
driver.switch_to.frame(driver.find_element_by_xpath("//frame[@src='kundengarantie.php']"))
driver.find_element_by_name('bedin').click()
continue_link = driver.find_element_by_link_text('weiter')
continue_link.click()
driver.switch_to.default_content()
driver.switch_to.frame(driver.find_element_by_xpath("//frame[@src='kundengarantie.php']"))
all_text = driver.find_elements_by_css_selector("td.Stil1 input")
text_node = driver.execute_script("return arguments[0].nextSibling.textContent;", all_text[1])
text_node_trim = text_node.strip()
print(text_node_trim)
def myfunc(visible):
driver.find_element_by_xpath("//td[contains(.,'"+text_node_trim+"')]/input").click()
myfunc("Haltestelle / Bahnhof")
答案 1 :(得分:0)
根据网站http://nvv31.webqms.de/nvv/kunden/
,单击与 Regionalzug , Tram 或 Bus 的文本相关的任何单选按钮可以编写一个将字符串作为参数的函数,如下所示:
def click_me(myString):
driver.find_element_by_xpath("//table[@class='Stil1']//td[contains(.,'" + myString + "')]/input[@name='mittel']").click()
现在,您可以使用以下任何相关文本来调用函数click_me()
:
click_me("Regionalzug")
click_me("Tram")
click_me("Bus")
click_me("AnrufSammelTaxi")