我正在使用chromedriver,我有以下网页来源:
attackingUnit = selectUnit(input.nextInt());
attackerUnitName = attackingUnit.getUnitName();
//check if its valid
if(attackerUnitName==Unit.Unknown){
//unit is unknown ,tell the user the input was invalid
} else {
//input was valid, do what you want to do
}
点击任何一个href后,浏览器会转到新页面,但网址保持不变。
我想要实现的是点击第一个href,即<form id="stepLinksForm" name="stepLinksForm" method="POST" target="mainFrame">
<ul>
<li> <a href="javascript:submitLink('action_one.htm')">Action One</a> </li>
<li> <a href="javascript:submitLink('action_two.htm')">Action Two</a> </li>
<li> <a href="javascript:submitLink('action_three.htm')">Action Three</a> </li>
</ul>
</form>
我已尝试过find_element_by_xpath,link_text和互联网上建议的其他一些方法,但它们都不起作用。 如果有人可以提供帮助,我真的很感激。
答案 0 :(得分:2)
要点击第一个href文本 Action One ,您可以使用以下任一选项( Python语言装订艺术):
linkText
:
driver.find_element_by_link_text("Action One").click()
cssSelector
:
driver.find_element_by_css_selector("a[href*='action_one.htm']").click()
xpath
:
driver.find_element_by_xpath("//a[contains(@href,'action_one.htm') and contains(.,'Action One')]").click()
由于您无法通过LINK_TEXT
,CSS
,XPATH
找到该元素,甚至在time.sleep()
之后,因此几乎可以确认该元素位于 frame ,由 <frame>
标记表示。
现在,您可以通过&#34;检查&#34; 来查看它们,找到 HTML DOM 中的元素并遍历 HTML 。在某些时候,您会找到<frame>
标记。首先将<frame>
代码和开关的属性添加到目标框架,然后尝试使用我提供的定位器策略回答。在这里,您可以找到关于How can I select a html element no matter what frame it is in in selenium?
答案 1 :(得分:0)
而不是点击,您可以直接调用javascript代码:
browser.execute_script("submitLink('action_one.htm')")
相当于javascript:submitLink('action_one.htm')
或者你可以通过它的文字找到a:
browser.find_elements_by_xpath("//a[contains(text(), 'Action One')]")