Web tarayıcısı ile phantomJS'yi deniyorum ve javascript uyarılarını işleme konusunda sorun yaşıyorum. Phantomjs sürücüsünün istenen_capabilities alanı olduğunu fark ettim 'handlesAlerts': False
Bu değeri true olarak ayarlamanın bir yolu var mı? Bariz yolu denedim ama herhangi bir etkisi yoktur:Selenium İstenen Yetenekler - set tutamakları PhantomJS sürücüsü için araçlarKullanıcılar
drv = webdriver.PhantomJS(desired_capabilities={'handlesAlerts': True})
print drv.desired_capabilities
{u'browserName': u'phantomjs',
u'driverName': u'ghostdriver',
u'driverVersion': u'1.0.3',
u'handlesAlerts': False,
u'javascriptEnabled': True,...}
Ben sözlüğe drv.desired_capabilities['handlesAlerts'] = True
değeri değiştirebilir, ama bir uyarı geçmek çalıştığınızda bir hata iletisi alabilirsiniz.
$cat index.html
<html>
<body>
<script type="text/javascript">
alert('FOO!');
</script>
Hello World.
</body>
</html>
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.desired_capabilities['handlesAlerts'] = True
>>> driver.get('index.html')
>>> alert = driver.switch_to_alert()
>>> alert.text
Traceback (most recent call last):
<snip>
selenium.common.exceptions.WebDriverException: Message:
'Invalid Command Method - Request =>
{"headers":{"Accept":"application/json",
"Accept- Encoding":"identity",
"Connection":"close",
"Content-Type":"application/json;charset=UTF- 8",
"Host":"127.0.0.1:56009",
"User-Agent":"Python- urllib/2.7"},
"httpVersion":"1.1",
"method":"GET",
"url":"/alert_text",
"urlParsed": {"anchor":"",
"query":"",
"file":"alert_text",
"directory":"/",
"path":"/alert_text",
"relative":"/ alert_text",
"port":"",
"host":"",
"password":"",
"user":"",
"userInfo":"",
"authority":"",
"protocol ":"",
"source":"/alert_text",
"queryKey":{},
"chunks":["alert_text"]},
"urlOriginal":"/session/cd31ed90-a5f8-11e2-856d-5783db9f5342/alert_text"}'
Viki sayfası yanıltıcı. API, gerçekte istenen yeteneklerden geçecek şekilde uygulanmaktadır ve uzak uç, oturumu oluşturabilecekleri şekilde oturumu oluşturur. Uzak uç oturumda gerçekte mevcut olan yetenekleri döndürür ve iletişim tek yönlüdür (yerel düzenlemeler uzak oturumu etkileyemez). Bekleyen [W3C WebDriver spesifikasyonu] (http://www.w3.org/TR/webdriver/) 'da, sunucu yeteneği sağlayamıyorsa bir istisna atacak bir "requiredCapabilities" ayarı var, ancak Bildiğim kadarıyla henüz herhangi bir sürücü tarafından uygulandı. – JimEvans
Downvoter, doğru cevabı reddetme konusunda doğru bir noktayı göremiyorum –
@usmcs Özür dilerim mizah girişiminde yolum var ve "snark" gibi görünüyordu. Bu niyet değildi. Sürücüyü daha iyi ifade etmek için cevabı yeniden yazdım. Ayrıca, söz konusu wiki sayfasının bu durumla ilgili daha net olması için güncellendiğini de unutmayın. Diğer downvoters, bu cevap şeylerin nasıl olduğunu açıklar. Sadece duymak istediğin şey değil ya da istediğin gibi değil, cevabı daha az geçerli ya da doğru yapmaz. – JimEvans