2016-09-03 11 views
2

xpathのボタンがx回クリックされるforループを作成しようとしています。 xpathesxpathが増えるforループを作成する

(//button[@type='button'])[47] 
(//button[@type='button'])[65] 
(//button[@type='button'])[83] 
(//button[@type='button'])[101] 
(//button[@type='button'])[119] 

のリストだから、xpathesの数字は18で増加し、これは何百万に上がるがあります。 作成しようとしているプログラムは、xpathボタンを何回クリックするかを尋ねるでしょう。私が5回入力したとしよう。ここに私の問題があります。 xpathボタンをクリックするたびに、数字が18ずつ増加するforループは作成できません。私は試みました

browser.find_element_by_xpath("(//button[@type='button'])[int(x)]").click() 

私は18を整数xに追加できますが、失敗しました。どんな助けもありがとうございます。ここ は

browser.find_element_by_xpath("(//button[@type='button'])[in‌​t(x)]").click()

と構文エラー、

が最初に私はその後、私は型のX = 47を入力し、コードが

print('How many times do you want to click?') 
times = input() 

x = 47 

for i in range(0,int(times), 18): 
    browser.find_element_by_xpath("(//button[@type='button'])['str(x)']").click() 

。具体的にどのように見えるかです。私は

browser.find_element_by_xpath("(//button[@type='button'])[47‌​]").click()

に入力すると、それは正常に動作します。私は割り当てられた変数で番号 '47'を変更しようとしています。ここで

は構文エラーです:

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    browser.find_element_by_xpath("(//button[@type='button'])[int(x)]").click() 
    File "C:\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 293, in find_element_by_xpath 
    return self.find_element(by=By.XPATH, value=xpath) 
    File "C:\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element 
    'value': value})['value'] 
    File "C:\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python35\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression (//button[@type='button'])[int(x)] because of the following error: 
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '(//button[@type='button'])[int(x)]' is not a valid XPath expression. 
    (Session info: chrome=52.0.2743.116) 
    (Driver info: chromedriver=2.23.409699 (49blablablablablbalb5129),platform=Windows NT 6.3.9600 x86_64) 
+0

あなたはそれが失敗した何を意味するのですか?何が起こったのか? –

+0

最初にx = 47と入力してから、browser.find_element_by_x_path( "(// button [@ type = 'button'] [int(x)]")をクリックします。しかし、私がbrowser.find_element_by_xpath( "(// button [@ type = 'button'] [47]")をクリックすると、click()は正常に実行されます。私は割り当てられた変数で番号 '47'を変更しようとしています。 –

+0

あなたの質問に構文エラーを含めてください。それを変更しないで、エラー全体をコピーしてあなたの質問に貼り付けてください。 –

答えて

1

あなたは例えば、有効なXPathクエリを構築するためのフォーマット文字列を使用する必要があります。

build_xpath = "(//button[@type='button'])[{}]".format 
for n in range(47, 47 + 18 * times, 18): 
    brower.find_element_by_xpath(build_xpath(n)).click() 
+0

ああ撮影!私にそれを打つ。 –

+0

うわー、ありがとう!魅力のように働く! –

関連する問題