我试图滚动到页面上的某个特定元素,但在此之前,我试图将myelement设置为WebElement对象,下面是代码:

from selenium import webdriver

browser.get("http://www.agoda.com/the-coast-resort-koh-phangan/hotel/koh-phangan-th.html")
WebElement myelement = browser.findElement(By.id("next-page"));

但它又出现了一个错误:
WebElement myelement = browser.findElement(By.id("next-page"));
                   ^
SyntaxError: invalid syntax

我错过了什么?
更新:好吧,看起来我在写Java!正如第一个答复所述,但我的问题有点变化,因为我的实际代码是:
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Firefox()
browser.get("http://www.agoda.com/the-coast-resort-koh-phangan/hotel/koh-phangan-th.html")

browser.find_element_by_xpath("//a[@id='next-page']").click()

myelement = browser.find_element(By.id("next-page"));
((JavascriptExecutor) browser).executeScript("arguments[0].scrollIntoView(true);", element);
Thread.sleep(500);

browser.find_element_by_xpath("//a[@id='next-page']").click()

从而产生错误:
File "<ipython-input-22-bb983f3ceca8>", line 10
    ((JavascriptExecutor) browser).executeScript("arguments[0].scrollIntoView(true);", element);
                            ^
SyntaxError: invalid syntax

可能会再次编写Java,但应该如何修改?

最佳答案

Python不是Java。(WebElement元素=…;)
这里有一个指向python方法等的documentation的链接。
你真正想要的是:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://www.agoda.com/the-coast-resort-koh-phangan/hotel/koh-phangan-th.html")
myelement = browser.find_element_by_id("next-page")

虽然您可以在上面使用By,但是find_element_by_id在imo中更具可读性。
编辑:
同样的第二点
browser.execute_script("arguments[0].scrollIntoView();", element)

我已经有一段时间没用过上面的东西了,所以我可能记不起atm了:
browser.execute_script("return arguments[0].scrollIntoView();", element)

您还可以滚动到如下元素:
browser.execute_script("window.scrollTo(0, %d)" % element.location['y'])

Thread.sleep(500);也不起作用,您可以删除行后的分号,它们不一定是“错误的”,但它们是多余的。

关于python - Python Selenium WebElement元素-语法无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37515755/

10-14 12:09
查看更多