selenium定比特無法定比特網頁元素

CSDN問答 2022-01-07 18:56:39 阅读数:199

selenium 比特 法定 比特 元素

selenium打開網址之後。定比特元素。

網頁裏這樣的錶格。我用了driver.find_elements_by_css_selector('[style="text-align: right;"]')[0].click()

去點擊。

出錯代碼。

 Message: element click intercepted: Element <input type="text" class="unit sc-common-input" style="text-align: right;"> is not clickable at point (833, 869). Other element would receive the click: <div class="footer-buttons">...</div>

消息:元素單擊被攔截

這個問題已經解决了。使用

div=driver.find_elements_by_css_selector('[style="text-align: right;"]')[1]
js1 ="arguments[0].scrollIntoView();" 
driver.execute_script(js1, div) 

可以定比特輸入。

但是出現了另外的問題,

 

.

這個頁面可以定比特到。

driver.find_elements_by_css_selector('[class="html-area-content"]')[0].click()

可以定比特到。

但是無法傳值進去

出現錯誤,元素不可交互。

是什麼情况。

這個是html代碼的輸入框。

無法傳值




采納答案:

您需要在該元素上使用焦點或滾動。您可能還必須使用顯式等待。

 

WebElement firstbutton= driver.findElement(By.xpath("Your Element"));Actions actions = new Actions(driver);actions.moveToElement(element);actions.perform();

 

或者

該元素不可點擊,因為其上方有一個微調器/疊加層:

 

By loadingImage = By.id("loading image ID");WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));

 

或者

 

Point p= element.getLocation();Actions actions = new Actions(driver);actions.moveToElement(element).movebyoffset(p.x,p.y).click().perform();

 

或者

如果仍然無法使用,請使用 JavascriptExecutor

 

JavascriptExecutor executor = (JavascriptExecutor)driver;executor.executeScript("arguments[0].click();", firstbutton);


其他答案2:

根據報錯的來看提示的是你定比特的元素不能點擊,其他元素<div class="footer-buttons">...</div>可以接收點擊

說下解决思路吧,根據定義到的問題選擇解决辦法

1、先確保你要定比特的元素是否正確的---通過chrome-f12下CTRL+F查詢style="text-align: right;"]查看是否能定比特正確,如下所示,可以看到能定比特到幾個,判斷你取的find_elements返回值的第一個是否正確

2、如果定比特的元素正確,並且已能定比特到,需要進行以下幾點排查

  •    元素是否接受click事件
  •   是否被其他元素遮擋導致不能點擊---解决辦法:可以判斷遮擋的元素消失後再點擊、或者使用js進行點擊
  •   元素是否展示在當前屏幕還是需要滾動才能展示--解决辦法:用js或者滾動到此元素顯示在屏幕上

不過你是要輸入內容,不用click,直接send_keys應該就可以了吧

   


其他答案3:

哪個網站


其他答案4:

你是怎麼傳值的呢


其他答案5:

有4種可能的解决方案:
1.使用Actions()方法

 

WebElement element = driver.findElement(By("element_path"));Actions actions = new Actions(driver);actions.moveToElement(element).click().perform();

2.在執行單擊之前,使用“等待”使頁面完全加載

 

driver.manage().timeouts().implicitlywait(15 TimeUnit.seconds)

3.由於元素上方有一個微調器/疊加層,因此該元素不可單擊:

 

By loadingImage = By.id("loading image ID");WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));

4.宏執行

 

button = driver.find_element_by_xpath("xpath")driver.execute_script("arguments[0].click();", button)
版权声明:本文为[CSDN問答]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201071856388775.html