2017-01-16 22 views
2

セレンxpathでテキストをコピーするには? 私はpython seleniumテキストのコピー方法は?

driver.find_elements_by_xpath("//div[@class='rankingItem-value js-countable']").text 

を書くとき、私は次のエラーを取得:

Traceback (most recent call last): 
    File "<stdin>", line 15, in <module> 
AttributeError: 'list' object has no attribute 'text' 

フルコード:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 
driver = webdriver.Firefox() 
driver.get('https://www.similarweb.com/') 
driver.find_element_by_id("js-swSearch-input").send_keys("www.pornhub.com") 
driver.find_element_by_css_selector("button.swSearch-submit").click() 
#self.driver.implicitly_wait(30) 
time.sleep(10) 


content = driver.find_elements_by_xpath("//div[@class='rankingItem-value js-countable']").text 
print(content) 

私は "22" 1、表にサイトのグローバルランクをコピーする必要があります。どうやって?

+0

を 'のリストを返しますfind_elements_by_xpath'要素。要素を反復し、各要素からテキストを取得する必要があります。 –

+0

可能性の重複[セレンのPythonのXPathで要素を選択する方法](http://stackoverflow.com/questions/19035186/how-to-select-element-with-selenium-python-xpath) – parik

答えて

1

を取得しますxpath)またはfind_elements_by_xpath(xpath)[0](すなわちxpathによりマッチした要素のリストからの第1のウェブ要素を戻します)。 class="rankingItem-value js-countable"とはdivがないとしても、あなたのXPathが正しくありません - あなたの代わりにspanを必要としています。したがって、次の試してください。

content = driver.find_element_by_xpath('//span[@class="rankingItem-value js-countable"]').text 

または

content = driver.find_elements_by_xpath('//span[@class="rankingItem-value js-countable"]')[0].text 

あなたは以下の使用、 "カントリーランク" または "カテゴリーランク" を取得する必要がある場合:

content_of_country_rank = driver.find_elements_by_xpath('//span[@class="rankingItem-value js-countable"]')[1].text 
content_of_category_rank = driver.find_elements_by_xpath('//span[@class="rankingItem-value js-countable"]')[2].text 
+0

それが動作、ありがとうございます!また、カテゴリランクオプションのおかげで大変感謝しています。 –

0

あなたはリストオブジェクトに関数を呼び出ししようとしているので、あなたがエラーを取得しています。

あなたはwebelementsのリストを返し、

は、私はあなたが達成しようとしているのかわからないですが、あなたはすべての要素の内容を印刷しようとした場合、次のコードは動作するはずですfind_elementないfind_element を使用しています。

elements = driver.find_elements_by_xpath("//div[@class='rankingItem-value js-countable']") 
content = "".join([element.text for element in elements]) 
print(content) 
0

それはあなたがパスに何を見つけていない場合ので、内容は[0]空になりますfind_elements_by_xpathを使用することをお勧めしますが、あなたはfind_element_by_xpathを使用する場合

content = driver.find_elements_by_xpath("//div[@class='rankingItem-value js-countable']") 

for c in content: 
    print c.text 

を試してみてパスで何を見つけていない、あなたはマッチした最初のウェブ要素を返しますfind_element_by_xpath(xpath)方法を(使用する必要があり、必要な要素を選択するには、エラー

関連する問題