我正在尝试编写一个代码,我可以用它来自动化每年必须完成的培训课程。它是年复一年的相同材料和相同的培训,所以我想为什么不自动化它。
我遇到的部分是单击一个单选按钮。我可以通过xpath使用find元素来选择单选按钮,但由于答案是随机的,我希望通过与单选按钮相关的文本找到元素。我尝试使用find_element_by_partial_link
但没有运气,我也可能做错了。这就是我的尝试:
test = browser.find_element_by_partial_link_text('Is this achievable?').
以下是我要访问的元素:
<label for="q1789110:1_answer0" style="background-color: rgb(234, 114, 0);" id="yui_3_17_2_3_1509578998475_118">Is this achievable?</label>
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
如果这是你的元素:
<script>
function myFunction() {
alert("Hello!")
}
</script>
<label for="q1789110:1_answer0" style="background-color: rgb(234, 114, 0);" id="yui_3_17_2_3_1509578998475_118" onclick="myFunction()">Is this achievable?</label>
并且您想使用xpath,您可以将{和"text()"
使用和条件:
driver.find_element_by_xpath("//label[@id='yui_3_17_2_3_1509578998475_118' and text()='Is this achievable?']").click()
修改强>
如果ID更改,您只需检查文本值:
driver.find_element_by_xpath("//label[text()='Is this achievable?']").click()
答案 1 :(得分:0)
如果您的HTML代码看起来像这样
<form action="/action_page.php">
<label for="male">Male</label>
<input type="radio" name="gender" id="male" value="male"><br>
<label for="female">Female</label>
<input type="radio" name="gender" id="female" value="female"><br>
<label for="other">Other</label>
<input type="radio" name="gender" id="other" value="other"><br><br>
<input type="submit" value="Submit">
</form>
您可以先使用xpath来查找使用文本的标签节点,然后让它获取&#39;对于&#39;属性:
for_attr = driver.find_element_by_xpath("//label[text()='Male']").get_attribute("for")
然后你可以找到输入元素以便点击它:
通过xpath
driver.find_element_by_xpath("//input[@type='radio' and @id='%s']" % (for_attr)).click()
或通过id
driver.find_element_by_id(for_attr).click()