Bazı temel tarayıcı sınamalarını gerçekleştirmek için selenium-python bağlamaları kullanıyorum. Varsayılan olarak görünmeyen bir öğeye tıklamanız gerekiyor. is_displayed() method
tarafından kontrol ettim. Yani, aşağıdaki kodu kullanarak görünür hale getirmek için execute_script
yöntemini kullanmayı denedim, ancak hata iletileri alıyorum. Görünmez bir elementi görmemiz gereken ortak bir senaryo. Bu tür sorunları yönetmenin başka yolları da olmalı. Kimsenin bana kodumdaki sorunu göstermesi yararlı olacaktır. Bir python kodu içinde saf js ile bir eleman üzerine tıklayabilir miyim? Selenium-python görünmez bir öğe görünür hale getiriyor
print "getting keyword ideas"
searches = driver.find_element_by_xpath("//*[contains(text(), 'Avg. monthly searches')]")
driver.execute_script("arguments.style.visibility='visible';", searches)
ve hata iletisi: sürücüsünde, hat 140,
traceback (son En son çağrı): Dosya "\ vhosts \ phpsols \ kıymık \ adwords.py C". execute_script ("arguments.style.visibility = 'görünür';", aramalar) Dosya "C: \ anaconda32 \ lib \ site-paketleri \ selenyum \ webdriver \ uzaktan \ webdriver.py", satır 429, execute_script içinde { 'script': komut dosyası, 'args': converted_args}) ['value'] Dosya "C: \ anaconda32 \ lib \ site-packages \ selenium \ webd river \ remote \ webdriver.py ", hat 201, yürütme sırasında self.error_handler.check_response (yanıt) Dosya" C: \ anaconda32 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py ", satır 181, check_response artış exception_class (ileti, ekran, stacktrace) selenium.common.exceptions.WebDriverException: İleti: {"errorMessage": "undefined bir nesne değil (değerlendiren 'arguments.style.visibility =' visible ' ') " "istek": { "başlıkları": { "Kabul Et": "application/json", "Accept-Encoding": "kimliğini", "Connection": "yakın", "Content-Length":" 210 ", "Content-Type": "application/json; charset = UTF-8", "Sunucu": "127.0.0.1:55867","User-Agent":"Python-urllib/2.7"},"httpVersion" : "1.1", "yöntem": "POST", "yayınla": "{\" sessionId \ ": \" 8f05e120-f672-11e5-91c5-c7097c43ddb4 \ " , \ "args \": [{\ "element-6066-11e4-a52e-4f735466cecf \": \ ": wdc: 1459340795815 \", \ "ELEMENT \": \ ": wdc: 1459340795815 \"}] , \ "script \": \ "arguments.style.visibility = 'visible'; \"} "," url ":"/execute "," urlParsed ": {" çapa ":" "," sorgu ": "", "dosya": "", "dizin yürütme": "/", "yol": ": ""/ yürütmek port" "/ "" göreli yürütme": "", "ev sahibi": "" "parola": "", "kullanıcı": "", "userinfo": "", "otorite": "", "protokol": "", "kaynak": "/" "" queryKey yürütün: { }, "parçalar":}} "/ oturum/8f05e120-f672-11e5-91c5-c7097c43ddb4/yürütme" ekran görüntüsü: "urlOriginal"} [ "yürütme"] mevcut ekran
<div id="gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0">
<div style="text-align:right">Avg. monthly searches
<span class="table-tooltip" id="gwt-debug-tooltip-4580983"> </span>
<br>
</div>
</div>
ile İşte python kodu:
print "getting keyword ideas"
driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.visibility = "visible";')
driver.execute_script('document.getElementById("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0").style.display = "block";')
searches = driver.find_element_by_xpath("//*[contains(text(), 'Avg. monthly searches')]")
if searches.is_displayed():
print "searches is visible"
else:
print "searches isn't visible"
avg_monthly_searches = driver.find_elements_by_id("gwt-debug-column-SEARCH_VOLUME_PRIMARY-header-0-0")
for avg in avg_monthly_searches:
if avg.is_displayed():
print "element is visible, so clicking ..."
actions = ActionChains(driver)
actions.click(on_element=avg).perform()
time.sleep(10)
print "scrolling to the bottom"
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
print "getting the page source as interpreted by chromedriver"
driver.execute_script('return document.documentElement.innerHTML')
print "getting keyword ideas source"
content = driver.page_source
with open('keyword_ideas.html', 'w') as f:
f.write(content.encode('utf-8'))
time.sleep(5)
print "getting html"
dom = DOM(content)
print "traversing ... "
for e in dom('td.spgb-f'):
for a in e('a.sptc-e.sptc-h'):
print repr(plaintext(a.content))
else:
print "element isn't visible"
görünmez eleman – Andersson
@Andersson için 'HTML' kod örneğini sunmak, sana' div' eleman tıklayın istediğinize emin misiniz html parçasını –
ekledik? Gerçekten tıklanabilir mi? – Andersson