2016-06-23 53 views
1

其中一個所需元素位於頁面的右上角,除非手動調整窗口大小以使元素存在,否則硒將不會看到它。如果我這樣做,一切正常。硒會找到元素,點擊它,並做我想做的事情。這是我在Python代碼除非我手動調整窗口大小,否則硒將不會看到元素

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']"))) 
num_list = driver.find_element_by_xpath("//input[@id='15_button']") 
num_list.click() 

我曾嘗試用

driver = webdriver.Chrome() 
driver.set_window_size(1024, 1024) 
driver.maximize_window() 

這確實讓元素可見的瀏覽器開始調整窗口的大小,但隨後硒給出了錯誤

Message: unknown error: Element is not clickable at point (1206, 719). Other element would receive the click: <li id="15_input_5" class="selected">...</li> 

有誰知道如何解決它?

非常感謝!

回答

3

該錯誤表示有一個不同的element覆蓋您嘗試點擊的element。如果Selenium試圖點擊它,點擊將實際發生在覆蓋它的元素上,因此會引發此錯誤。您可以使用javascript點擊它,這樣,element是否被覆蓋並不重要。

num_list = driver.find_element_by_xpath("//input[@id='15_button']") 
driver.execute_script("arguments[0].click();", num_list) 

另一個提示給你。在您的代碼示例,你正在做的:

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']"))) 
num_list = driver.find_element_by_xpath("//input[@id='15_button']") 

wait.until()將返回元素一旦決定了它是可以點擊的。因此,您可以像這樣擺脫第二個find

num_list = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='15_button']"))) 
+0

您通常希望以用戶的方式與網站進行交互。使用JS直接點擊一個隱藏的元素通常不是一個好的做法,因爲用戶不能這樣做。找出隱藏元素並將其忽略掉,或者您可能需要等待元素出現/消失。 – JeffC

+0

wait.until()提示是個不錯的選擇,但您可以繼續前進,並將.click()添加到行的末尾,而不需要將元素存儲在num_list中。 – JeffC

相關問題