所以我制作一个脚本,在网络浏览器中为我点击一些按钮。
导入selenium驱动程序:
from selenium import webdriver
browser = webdriver.Chrome(executable_path=r'C:/Python27/Scripts/chromedriver.exe')
在这个例子中,当我想点击“离开酒店”按钮时,我可以使用css_selector,它可以正常工作。
<div id="canvas">
<!--<a onclick="leave_hotel();" name="go_ut" onmousedown="signature.push([Math.floor(Date.now()), 'click']);" class="hotel-button-out">-->
<a onclick="leave_hotel();" name="go_ut" onmousedown="" class="hotel-button-out">Sjekk ut <span style="font-size:0.7em" id="hotell_tid">(23 t 55 m)</span></a>
<input type="hidden" name="t" value="cb5a965fbb0a3578344aec059afa7246">
<input type="hidden" name="xy" id="xy" value="">
<input type="hidden" name="ltoken" value="ea782433046a2e254b10db5045b55d02">
<input type="hidden" value="633eacc2bbe92004ba03c9dd57ff9457" name="ttoken">
<input type="hidden" name="jtoken" id="jtoken" value="">
</div>
这样的事情很好:
browser.find_element_by_css_selector('#canvas > a').click()
但是当我尝试在另一个页面上单击div中的按钮时,它不起作用。 html看起来像这样:
<div class="canvas hotel-out">
<input class=" btn btn-block" name="enkel_knapp" onmousedown="krim_enkel_bego(2);" type="button" id="submit" value="Begå kriminaliteten!">
<input type="hidden" name="ltoken" value="e386d141ff442655d48275e0269fe1fe">
<input type="hidden" value="2b61bc54fe84d18ae5ad797826152e32" name="ttoken">
<input type="hidden" name="jtoken" id="jtoken" value="">
<input type="hidden" id="xy" value="nytt system (ingen koordinater)" name="xy">
</div>
但问题是按钮xpath与其他3个按钮相似。所有三个按钮都得到了xpath“// * [@ id =”submit“]”。我想这里有某种冲突?
当我尝试按名称这样做时,我没有得到任何回应:
browser.find_element_by_name('enkel_knapp').click()
当我通过ID执行此操作时没有:
browser.find_element_by_id('submit').click()
任何人都有任何提示按div或其他东西过滤?
我得到的错误:Pastebin
答案 0 :(得分:0)
正如您在问题中提到的那样,xpath xpath
不是唯一的并且与其他3个按钮类似,因此我们需要为此按钮构建唯一的css_selector
或browser.find_element_by_css_selector("div.canvas.hotel-out > input#submit").click()
如下:
<强> xpath
强>
browser.find_element_by_xpath("//div[@class='canvas hotel-out']/input[@id='submit']").click()
<强> {{1}} 强>
{{1}}